关于书中3.7 初识循环中设计第一个小游戏的一点疑惑.
"""设计第一个小游戏"""temp = input("不妨来猜一下小甲鱼现在心里想的是哪个数字:")
guess = int(temp)
while guess != 8:
if guess > 8:
print("哥,大了大了")
else:
print("嘿,小了小了")
temp = input("请再试试吧:")
guess = int(temp)
print("哎呀,你是小甲鱼心里的蛔虫吗?")
以上,第二行代码,是将用户输入的数字保存到temp变量,然后再把这个变量转换成整型.那么为啥当我输入一个浮点型的数字,例如8.1或者7.9,脚本却没有转换成整数8或者7而是直接报错了?
ValueError: invalid literal for int() with base 10: '8.1'
不太能理解,请指点,谢谢.
int 函数不能将浮点字符串转化为整型,因为 int 函数只能转化 纯数值类型的 字符串,字符串中的 "." 小数点会导致报错
float 函数可以将浮点型字符串转化为浮点数,所以你可以使用 float 函数
参考代码:
"""设计第一个小游戏"""
temp = input("不妨来猜一下小甲鱼现在心里想的是哪个数字:")
guess = float(temp) # ------------------------------------这里改成 float
while guess != 8:
if guess > 8:
print("哥,大了大了")
else:
print("嘿,小了小了")
temp = input("请再试试吧:")
guess = float(temp) # ------------------------------------这里改成 float
print("哎呀,你是小甲鱼心里的蛔虫吗?")
这样修改后,如果你想,那么就可以再套一层 int 函数转为整型即可
字符串中有小数点的话 int 没办法读取
可先用 float 将字符串转换为小数 , 再用 int
temp = int(float(input("..."))) Twilight6 发表于 2022-5-12 16:04
int 函数不能将浮点字符串转化为整型,因为 int 函数只能转化 纯数值类型的 字符串,字符串中的 "." 小数 ...
版主你好,我是0基础,请见谅.
int 函数只能转化 纯数值类型的
这句话没明白,既然是纯数值类型的,0~100既然是整数,那就不用转换啊?我试了
int(100)
结果还是100啊.
或者我应该问,在什么情况下才会这样子.也或者直接这样写能行吗?
"""设计第一个小游戏"""
temp = input("不妨来猜一下小甲鱼现在心里想的是哪个数字:")
guess = temp
while guess != 8:
if guess > 8:
print("哥,大了大了")
else:
print("嘿,小了小了")
temp = input("请再试试吧:")
print("哎呀,你是小甲鱼心里的蛔虫吗?")
试了一下,报错了...看来没那么简单.
TypeError: '>' not supported between instances of 'str' and 'int'
{:5_109:}谢谢 if guess > 8:
这里必须要求有'str'和'int' 柿子饼同学 发表于 2022-5-12 16:20
字符串中有小数点的话 int 没办法读取
可先用 float 将字符串转换为小数 , 再用 int
temp = int(float(i ...
谢谢回复,这就是上面版主说的套一层int进行转换的意思了吧? mudo 发表于 2022-5-12 16:25
版主你好,我是0基础,请见谅.
int 函数只能转化 纯数值类型的
这句话没明白,既然是纯数值类型的,0~100 ...
哈哈没事,都有一个阶段的~
纯数值类型的字符串
我这里特指转化字符串的情况, int(100) 这样没意义
因为本身就是十进制 100 整形,还用 int 转化就相当于没转,反正都是本身的数值
在什么情况下才会这样子.也或者直接这样写能行吗?
input 函数返回的是用户输入的字符串数据,是字符串,即 str
因为返回的数据类型不一致,这里你的代码中,不能直接通过 if guess > 8 直接进行比较,所以需要用 float 或 int 转化为数字对象,才能进行比较 Twilight6 发表于 2022-5-12 16:29
哈哈没事,都有一个阶段的~
我输入10,并不是真的是整数10可以拿来做数学比较的,而是一个字符串,需要用int来进行转化成数值.
我理解的对吗? mudo 发表于 2022-5-12 16:34
我输入10,并不是真的是整数10可以拿来做数学比较的,而是一个字符串,需要用int来进行转化成数值.
我理解 ...
理解没错~
Twilight6 发表于 2022-5-12 16:38
理解没错~
谢谢,我看到后面有int(),float(),str()的用法了.{:5_110:} mudo 发表于 2022-5-12 16:40
谢谢,我看到后面有int(),float(),str()的用法了.
加油~
mudo 发表于 2022-5-12 16:29
谢谢回复,这就是上面版主说的套一层int进行转换的意思了吧?
对 , 我这里一行写的, 理解就好
页:
[1]