小金矿1984 发表于 2026-5-14 00:19:41

第002讲提问

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

temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
guess = int(temp)

if guess == 8:
    print("你是小甲鱼心里的蛔虫嘛?!")
    print("哼,猜中了也没奖励!")
else:
    print("猜错啦,小甲鱼现在心里想的是8!")
   
print("游戏结束,不玩啦^_^")

小游戏运行程序后输入小数,比如3.5 会显示错误,但是交互模式中输 int(3.5)就会正常返回整数3,小白搞不懂{:10_266:}

FishC 发表于 2026-5-14 00:19:53

鱼油你好!你这问题很典型,我来帮你理一理~

当你在程序里运行 input() 时,它得到的永远是字符串(哪怕你只敲了数字)。比如输入 3.5,变量 temp 保存的是字符串 "3.5"。接着你写 int(temp),相当于 int("3.5"),Python 尝试把字符串 "3.5" 转成整数,但它不认识小数点,就会报错(ValueError)。

而在交互模式里,你直接敲 int(3.5),这里的 3.5 是一个浮点数(float),float 可以无缝转成整数(直接舍去小数部分),所以得到 3。


想让程序接受小数,可以把 int(temp) 改成:

guess = float(temp)

然后判断的时候再比较小数就行。如果非要整数,可以先 float(temp) 再 int() 取整:

guess = int(float(temp))

这样输入 "3.5" 就变成 3 啦!

简单总结:input 返回的是字符串,int() 不能直接解析带小数点的字符串;而 int(3.5) 是浮点数转整数,所以没问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

小派 发表于 2026-5-14 00:22:08

input() 接收的是字符串,不是数字。int("3.5") 会报错因为字符串不能直接转整数,但 int(float("3.5")) 就可以,先转成浮点数再取整。如果允许小数的话可以试试 float() 而不是 int()。加油,继续学下去!

小金矿1984 发表于 2026-5-14 00:27:53

FishC 发表于 2026-5-14 00:19
当你在程序里运行 input() 时,它得到的永远是字符串(哪怕你只敲了数字)。比如输入 3.5,变量 temp...

当你在程序里运行 input() 时,它得到的永远是字符串(哪怕你只敲了数字)。比如输入 3.5,变量 temp 保存的是字符串 "3.5"。接着你写 int(temp),相当于 int("3.5"),Python 尝试把字符串 "3.5" 转成整数,但它不认识小数点,就会报错(ValueError)。

那如果我输入的是3,那么变量temp是不是也是保存的字符串“3”? 那这时候int(temp)是不是也相当于int("3")?为什么就不会报错呢?

FishC 发表于 2026-5-14 00:27:59

小金矿1984 发表于 2026-05-14 00:27
FishC 发表于 2026-5-14 00:19
当你在程序里运行 inp ...

是的,你理解得完全正确:输入 3 后,temp 保存的是字符串 "3",执行 int("3") 不会报错。原因很简单:int() 这个函数只认识【整数格式】的字符串,比如 "3"、"-8" 等。当字符串里含有小数点(如 "3.5"),它就会认为这不是一个有效的整数,于是抛出错误。

而浮点数 3.5 本身就带着小数点,是【数字类型】,所以 int(3.5) 直接对数字进行取整操作,Python 允许把小数截断成整数,不会报错。

总结一下:


[*] int("3") → 字符串里只有数字,合法,变成整数 3,没问题。
[*] int("3.5") → 字符串里有小数点,不是整数格式,报错。
[*] int(3.5) → 这是浮点数转整数,合法,直接截断得 3。


所以并不是输入“整数”就不会报错,而是 int() 只接受“整数形状的字符串”。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

小金矿1984 发表于 2026-5-14 00:31:46

小派 发表于 2026-5-14 00:22
input() 接收的是字符串,不是数字。int("3.5") 会报错因为字符串不能直接转整数,但 int(float("3.5")) 就 ...

感谢~

FishC 发表于 2026-5-14 00:31:51

小金矿1984 发表于 2026-05-14 00:31
小派 发表于 2026-5-14 00:22
input() 接收的是字符 ...

不客气,有问题随时再问!祝你学Python越来越顺利~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 第002讲提问