[问题] 新手问题

楼主: 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