#15803: python請教


dean52000@gmail.com (Andy)

學校 : 不指定學校
編號 : 87795
來源 : [220.136.212.138]
最後登入時間 :
2022-09-16 22:49:04
a002. 簡易加法 | From: [36.229.85.110] | 發表日期 : 2018-11-01 18:35

import sys
for s in sys.stdin:
a = s[0]
b = s[1]
c=a+b
print(c)

得解

#0: 20% WA (line:1)

您的答案為: 11
正確答案為: 33444

#1: 20% WA (line:1)

您的答案為: 1
正確答案為: 6


iimport sys
for s in sys.stdin:
a = s[0]
b = s[1]
c=abs(a)+abs(b)
print(c)

得解

#0: 20% RE (code:1)

您的程式被監控系統中斷,可能是程式無法正常結束所導致。
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'

#1: 20% RE (code:1)

您的程式被監控系統中斷,可能是程式無法正常結束所導致。
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'那串是提示什麼意思阿
 
#15806: Re:python請教


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
a002. 簡易加法 | From: [106.105.27.148] | 發表日期 : 2018-11-01 19:54

首先 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

 
#15810: Re:python請教


dean52000@gmail.com (Andy)

學校 : 不指定學校
編號 : 87795
來源 : [220.136.212.138]
最後登入時間 :
2022-09-16 22:49:04
a002. 簡易加法 | From: [36.229.85.110] | 發表日期 : 2018-11-01 22:58

import sys
for s in sys.stdin:
a = s[0]
b = s[1]
c=a+b
print(c)

得解

#0: 20% WA (line:1)

您的答案為: 11
正確答案為: 33444

#1: 20% WA (line:1)

您的答案為: 1
正確答案為: 6


iimport sys
for s in sys.stdin:
a = s[0]
b = s[1]
c=abs(a)+abs(b)
print(c)

得解

#0: 20% RE (code:1)

您的程式被監控系統中斷,可能是程式無法正常結束所導致。
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'

#1: 20% RE (code:1)

您的程式被監控系統中斷,可能是程式無法正常結束所導致。
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'那串是提示什麼意思阿



非常感謝,大大解開我的疑惑了!!

 
ZeroJudge Forum