见招拆招小冬喜 发表于 2020-9-26 18:34:26

int函数的问题

代码:
print("HELLO?")
temp=input("嘻嘻!")
guess=int(temp)
if guess==8:
    print("OMG !")
    print("哈哈哈")
else:
    print("不是啦")
print("好啦,不玩了")

问题:
int函数不是可以把小数转变成整数吗?我输入8.3,按道理应该转变成8赋值给guess,为什么运行出错?

运行过程如下:
HELLO?
嘻嘻!8.3
Traceback (most recent call last):
File "d:/我的文档/桌面/02文字游戏.py", line 3, in <module>
    guess=int(temp)
ValueError: invalid literal for int() with base 10: '8.3'


谢谢大家帮助~


sunrise085 发表于 2020-9-26 18:40:21

本帖最后由 sunrise085 于 2020-9-26 18:41 编辑

nput的返回值都是字符串,你输入8.3 得到的temp是 '8.3'
int只能转换纯数字的字符串,而temp中除了数字以外还有一个点,所以就出错了
int('12')#纯数字字符串,可以
int(8.3)#浮点数,可以
int('8.3')#含有小数点的字符串,不可以

hrp 发表于 2020-9-26 18:54:57

本帖最后由 hrp 于 2020-9-26 18:56 编辑

如楼上大佬所说的,int 只能将数字、纯数字字符串转换成整数,而input得到的永远是字符串,所以你输入8.3实际得到的是 '8.3' 字符串,这个字符串不是纯数字字符串,所以出错了。
要解决也简单,先用 float 函数将输入的字符串转换成浮点数(float函数可以将带点的数字字符串转换成浮点数),再用 int 函数将数字转换成整数即可。代码:
print("HELLO?")
temp=input("嘻嘻!")
guess=int(float(temp))
if guess==8:
    print("OMG !")
    print("哈哈哈")
else:
    print("不是啦")
print("好啦,不玩了")

开心小傻猪 发表于 2020-9-26 19:49:54

我也有同样的问题,谢谢解答

见招拆招小冬喜 发表于 2020-9-26 20:42:03

sunrise085 发表于 2020-9-26 18:40
nput的返回值都是字符串,你输入8.3 得到的temp是 '8.3'
int只能转换纯数字的字符串,而temp中除了数字以外 ...

谢谢老师,我明白了~

见招拆招小冬喜 发表于 2020-9-26 20:42:41

hrp 发表于 2020-9-26 18:54
如楼上大佬所说的,int 只能将数字、纯数字字符串转换成整数,而input得到的永远是字符串,所以你输入8.3实 ...

谢谢鱼友~辛苦了~

sunrise085 发表于 2020-9-26 21:09:57

见招拆招小冬喜 发表于 2020-9-26 20:42
谢谢老师,我明白了~

那就给个最佳答案吧
页: [1]
查看完整版本: int函数的问题