能請問一下哪裡有錯誤嗎? 而且為甚麼只有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')
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. 國文不好別抓錯字