#24890: python 求大神幫撥時間觀看~~感謝您!!


kent50215@gmail.com (Kent Wang)

學校 : 不指定學校
編號 : 150899
來源 : [223.139.62.60]
最後登入時間 :
2021-04-04 22:49:42
a006. 一元二次方程式 | From: [42.77.126.5] | 發表日期 : 2021-04-03 23:32

能請問一下哪裡有錯誤嗎? 而且為甚麼只有20分?

感謝您!!!

 

a, b, c = map(int, input().split())

d = (b * b) - (4 * a * c)

if d > 0:

    x1 = int((-b + (d ** 0.5)) // (2 * a))

    x2 = int((-b - (d ** 0.5)) // (2 * a))

    print('Two different roots x1=', x1, ', x2=', x2)

if d == 0:

    y = int((-b // (2 * a)))

    print('Two same roots', 'x=', y)

if d < 0:

    print('No real root')

 
#24931: Re:python 求大神幫撥時間觀看~~感謝您!!


hsugoya@gmail.com (Мигает cf4?)

學校 : 國立臺北科技大學
編號 : 139476
來源 : [218.172.15.43]
最後登入時間 :
2023-09-07 11:23:36
a006. 一元二次方程式 | From: [36.224.192.217] | 發表日期 : 2021-04-06 15:17

Python的print()裡面裡面直接放字串和變數的話會預設以空格隔開

以你程式中的print('Two same roots','x=',y)為例:

它的輸出結果會變成Two same roots x= 0,而正解是Two same roots x=0

 

您的答案為: Two same roots x= 0
正確答案為: Two same roots x=0

'x='和'0'的中間多了空格,程式自然會過不了

你得的那20分應該是答對了No real root那一組測資,因為那一組只有要輸出一組字串

還有'Two same roots''x='都屬於字串,大可直接寫在一起

主要有兩種解決方法:

1.在變數後面加上分隔符split=''讓變數和變數中間直接相連起來

以你程式中的print('Two same roots','x=',y)為例:

把它修改成print('Two same roots x=',y,split='')

輸出結果就會變成

Two same roots x=0

2.直接使用f-string處理

在Python3.6.2之後出現的新功能

使用方法是print(f'字串{變數}字串')

print()裡面加上f''

並在''裡面輸入字串,變數的話用大括弧{包起來}

注意,在f-string裡面字串和變數是連在一起的,不用再加分隔符

以你程式中的print('Two same roots','x=',y)為例:

把它修改成print(f'Two same roots x={y})

就過了,和上個方法一樣效果

 

要使用哪一個方法就憑個人好惡了

我是比較喜歡用f-string啦

比較簡潔一點

修改完後你的程式就AC了

 

a006. 一元二次方程式AC (18ms, 3.4MB) 
PYTHON

如果還有問題歡迎私我

p.s. 國文不好別抓錯字

 
#24932: Re:python 求大神幫撥時間觀看~~感謝您!!


hsugoya@gmail.com (Мигает cf4?)

學校 : 國立臺北科技大學
編號 : 139476
來源 : [218.172.15.43]
最後登入時間 :
2023-09-07 11:23:36
a006. 一元二次方程式 | From: [36.224.192.217] | 發表日期 : 2021-04-06 15:18

加油 👍

 
ZeroJudge Forum