import sys
for s in sys.stdin:
a = s[0]
b = s[1]
c=a+b
print(c)
得解
您的答案為: 11 正確答案為: 33444
您的答案為: 1 正確答案為: 6
iimport sys
for s in sys.stdin:
a = s[0]
b = s[1]
c=abs(a)+abs(b)
print(c)
得解
您的程式被監控系統中斷,可能是程式無法正常結束所導致。 Traceback (most recent call last): File "/4307823/code_4307823.py", line 5, in c=abs(a)+abs(b) TypeError: bad operand type for abs(): 'str'
您的程式被監控系統中斷,可能是程式無法正常結束所導致。 Traceback (most recent call last): File "/4307823/code_4307823.py", line 5, in c=abs(a)+abs(b) TypeError: bad operand type for abs(): 'str'
我延用第一題的方式,想說sys.stdin就是系統給的資料去延伸。
跑第一個程式得解後我以為是絕對值得關係,加了abs。但最後錯誤了。
是什麼原因呢?? abs():'str'那串是提示什麼意思阿
首先 Python 的輸入不管是使用 input() 或 sys.stdin 都是讀取一行字串(string, 即Python中的str),
(兩者差別在於 input() 的結尾沒有換行字元('\n')而 sys.stdin 會有)
由於 abs() 無法對 str 取絕對值所以導致型態錯誤(TypeError),
如果確定 str 是個數字可使用 int() 將 str 轉成 int(整數) ,
然後其實本題可以不用 abs() 的~
另外,
由於是讀取一行字串的緣故,
以範側第一筆來說 s = '5 10\n' ,
s[0]、s[1]的動作實際上是取第0個、第1個字元,
即 s[0] = 5 , s[1] = ' ' ,
顯然以上兩者並不是相加的對象, (應該要是 5 和 10 )
這邊應該使用 n = s.split() 即可使 s 以空白字元做分隔並存入 n , (此時 n = ['5' , '10'])
這樣取 n[0]、n[1] 才會相加的對象, ( '5' 和 '10' )
同樣由於型態仍然是 str ,
所以在相加前要記得取 int() 唷~
以上希望有幫助到你~ OwO
import sys
for s in sys.stdin:
a = s[0]
b = s[1]
c=a+b
print(c)
得解
您的答案為: 11 正確答案為: 33444
您的答案為: 1 正確答案為: 6
iimport sys
for s in sys.stdin:
a = s[0]
b = s[1]
c=abs(a)+abs(b)
print(c)
得解
您的程式被監控系統中斷,可能是程式無法正常結束所導致。 Traceback (most recent call last): File "/4307823/code_4307823.py", line 5, in c=abs(a)+abs(b) TypeError: bad operand type for abs(): 'str'
您的程式被監控系統中斷,可能是程式無法正常結束所導致。 Traceback (most recent call last): File "/4307823/code_4307823.py", line 5, in c=abs(a)+abs(b) TypeError: bad operand type for abs(): 'str'
我延用第一題的方式,想說sys.stdin就是系統給的資料去延伸。
跑第一個程式得解後我以為是絕對值得關係,加了abs。但最後錯誤了。
是什麼原因呢?? abs():'str'那串是提示什麼意思阿
非常感謝,大大解開我的疑惑了!!