[問題] 新手問題

作者: downthere (eat it)   2018-10-13 22:03:31
本人自學三天
目前在學串列
遇到一個問題覺得很納悶
題目:
老師想要設計一個程式,可以輸入學生成績,直到Enter鍵結束,最後成績由小到大排列
結果如下:
請輸入學生成績:85
請輸入學生成績:75
請輸入學生成績:60
請輸入學生成績:
成績由小到大排列:[60,75,85]
以下是我寫的:
list=[]
while True:
i=int(input("請輸入學生成績:"))
if(i==""):
break
list.append(i)
list1=sorted(list,reverse=False)
print(list1)
結果顯示:invalid literal for int() with base 10: ''
後來看了解答是:
list=[]
while True:
i=input("請輸入學生成績:")
if(i==""):
break
list.append(int(i))
list1=sorted(list,reverse=False)
print(list1)
差別就是我不能於第三行放入int
必須在第6行才能放入
這就是我納悶的地方
不是可以一開始就直接轉換成整數就好
為什麼這題反而不行了
作者: lajji (喇機)   2018-10-13 22:09:00
""的屬性是str 不能直接轉成int
作者: downthere (eat it)   2018-10-13 22:22:00
n=int(input("請輸入正整數:"))我之前也有寫到這種可是卻可以跑
作者: Yukifate   2018-10-13 22:38:00
我猜 i如果是int 在if那邊沒法跟""的str做比較 所以報錯
作者: InfinityGate (小鳥)   2018-10-13 23:33:00
因為這程式你要結束輸入要再輸入一個空字串當然沒辦法轉成int解答在轉型前就先break出去了,自然不會有問題
作者: handsomeLin (DoGLin)   2018-10-14 01:26:00
int跟str怎麼可能不能比較 就False而已 是你空字串沒辦法轉成整數報錯啊
作者: CaTom (Tom)   2018-10-14 09:39:00
如果輸入的是可轉成數值的字串就不會有問題,但只要有一次輸入資料有問題就會跳出錯誤(寫線上解題系統就常吃這種虧)
作者: Angesi (小雲豹)   2018-10-14 09:51:00
建議利用這一題 練一下try except對你熟練語法有幫助

Links booklink

Contact Us: admin [ a t ] ucptt.com