作者downthere (eat it)
看板Python
标题[问题] 新手问题
时间Sat Oct 13 22:03:31 2018
本人自学三天
目前在学串列
遇到一个问题觉得很纳闷
题目:
老师想要设计一个程式,可以输入学生成绩,直到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行才能放入
这就是我纳闷的地方
不是可以一开始就直接转换成整数就好
为什麽这题反而不行了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.32.163.73
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1539439414.A.48E.html
1F:→ lajji: ""的属性是str 不能直接转成int 10/13 22:09
2F:→ downthere: n=int(input("请输入正整数:")) 10/13 22:22
3F:→ downthere: 我之前也有写到这种 10/13 22:22
4F:→ downthere: 可是却可以跑 10/13 22:22
5F:→ Yukifate: 我猜 i如果是int 在if那边没法跟""的str做比较 所以报错 10/13 22:38
6F:→ InfinityGate: 因为这程式你要结束输入要再输入一个空字串 10/13 23:33
7F:→ InfinityGate: 当然没办法转成int 10/13 23:34
8F:→ InfinityGate: 解答在转型前就先break出去了,自然不会有问题 10/13 23:35
9F:推 handsomeLin: int跟str怎麽可能不能比较 就False而已 是你空字串没 10/14 01:26
10F:→ handsomeLin: 办法转成整数报错啊 10/14 01:26
11F:推 CaTom: 如果输入的是可转成数值的字串就不会有问题,但只要有一次 10/14 09:39
12F:→ CaTom: 输入资料有问题就会跳出错误(写线上解题系统就常吃这种亏) 10/14 09:41
13F:推 Angesi: 建议利用这一题 练一下try except 10/14 09:51
14F:→ Angesi: 对你熟练语法有帮助 10/14 09:51