richarden 发表于 2020-10-5 02:11:45

输入数值取整报错

求助贴:
输入数值,取整(int, round)后判断级别,如下,   但运行输入66.6(带小数都)报错

score1=input('please type your score:')
score=int(score1)
level=('d' if 0<=score<60 else
       'c' if 60<=score<80 else
       'b' if 80<=score<90 else
       'a' if 90<=score<100 else
       's' if score==100 else
       'please type 0-100')
print(score,' is level',level)


报错:
please type your score:66.6
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/1game.py", line 2, in <module>
    score=int(score1)
ValueError: invalid literal for int() with base 10: '66.6'

取整的INT ,换成ROUND 也是报错 TypeError: type str doesn't define __round__ method。

请教大佬是怎么回事,该如何对输入的数值取整?谢谢大佬!

巴巴鲁 发表于 2020-10-5 07:34:52

如果想想下取整的话:score1 = int(eval(score))

heidern0612 发表于 2020-10-5 10:24:26

字符串没办法直接int小数。

求整数,你可以在前面判断个isdigit,小数的话是会判断False的。

求小数,可以不int,直接float。36.0也算是小数。

荣耀 发表于 2020-10-5 10:58:54

同意楼上,可以先转换为浮点数在转整数

巴巴鲁 发表于 2020-10-5 11:31:43

荣耀 发表于 2020-10-5 10:58
同意楼上,可以先转换为浮点数在转整数

但是如果我输入66呢,程序还是会报错
用eval函数不管输入整数还是小数都能实现转换

dadaowuming 发表于 2020-10-5 13:42:47

新手学习:
input接收的对象,同意按字符串处理,自然需要转换为数值类型。
int(),接收整数字符串,float()接收浮点字符串,唯独eval()函数则是来者不拒.
不转换为数值类型,round 函数无力可施。
我觉得最方便的还是直接使用eval()函数
score1=input('please type your score:')
score=eval(score1)
level=('d' if 0<=score<60 else
       'c' if 60<=score<80 else
       'b' if 80<=score<90 else
       'a' if 90<=score<100 else
       's' if score==100 else
       'please type 0-100')
print(score,' is level',level)
页: [1]
查看完整版本: 输入数值取整报错