py012345678o 发表于 2020-8-30 18:28:07

为啥输入非整数Python会报错

"""用Python设计第一个小游戏"""

temp=input("请输入这次的数学考试成绩")

guess=int(temp)

if guess == 100:
    print("好棒,你离女神又近了一步")
else:
    print("小子,想要幸福,就得努力")

1q23w31 发表于 2020-8-30 18:31:12

int 只能转化纯数字字符串,或者负整数字符串,不能转带其他符号的字符了

比如这里的 5.6 就带有 . 这个字符, int 转化就会报错

你可以用 float 进行转化为浮点型,这样就不会报错了

参考代码:temp = input('输入想的数字:')
guess = float(temp)
if guess == 8:
    print('猜对了')
else:
    print('猜错了')

狗宁 发表于 2020-8-30 18:37:58

int是整数,你输入的85.5是小数,需要用float浮点类型

sunrise085 发表于 2020-8-30 18:40:25

这是int函数的用法规定
传入参数分两大类:一类是其他类型的数字,例如浮点型数字,其他进制书写的数字;另一类是纯数字的字符串,当然字符串的最前面一个字符可以是正/负号
int(85.5)       #传入其他类型数字,正确
int(0x2a03)#传入其他类型数字,正确
int("90")      #传入纯数字字符串,正确
int('-5')         #传入含有正负号的数字字符串,正确
int("85.5")   #传入非纯数字的字符串,报错
int("0x2a03") #传入非纯数字的字符串,报错

py012345678o 发表于 2020-9-6 14:09:52

sunrise085 发表于 2020-8-30 18:40
这是int函数的用法规定
传入参数分两大类:一类是其他类型的数字,例如浮点型数字,其他进制书写的数字; ...

谢谢你的回复,但还是有些不明白,请见图,同样的程序,同样输入的85和85.5显示是字符,但85却没有报错

sunrise085 发表于 2020-9-6 15:45:40

py012345678o 发表于 2020-9-6 14:09
谢谢你的回复,但还是有些不明白,请见图,同样的程序,同样输入的85和85.5显示是字符,但85却没有报错

请认真看我在4楼的回答。
另一类是纯数字的字符串,当然字符串的最前面一个字符可以是正/负号
int()传进去的字符串只能是纯数字字符,第一位字符可以是正负号,不可以出现其他字符
你传入的字符串,"85"这个字符串是字符 '8' 和字符 '5' ,共两个字符都是数字字符;但是"85.5",这个字符串是字符 '8' ,字符 '5' ,字符 '.' ,和字符 '5' ,共四个字符,其中三个是数字字符,一个是其他字符
页: [1]
查看完整版本: 为啥输入非整数Python会报错