鱼C论坛

 找回密码
 立即注册
查看: 2244|回复: 12

[已解决]为什么输入5.5会报错?

[复制链接]
发表于 2017-6-1 19:00:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 dzmpk007 于 2017-6-1 19:01 编辑

print("第一课小游戏")
import random
A = random.randint(1,10)
run = 1
temp = input("请猜小甲鱼心里的数字:")
guess = int(temp)
while guess != A and run < 3:
    if guess > A:
        print('猜大了^_^')
    else:
        print('猜小了T_T')
    temp = input("猜错了再来一次:")
    guess = int(temp)
    run = run + 1
if run <= 3:
    print('终于猜对了,好棒')
else:
    print('猜这么多次都没对')
print('游戏结束')

-------------------------------------------------------------------------------
我输入5.5的值不应该在第五步的时候变成5赋值给guess么?
最佳答案
2017-6-2 08:44:50
因为int函数不接受字面值为浮点数的字符串,在使用input(),输入的类型都是字符串类型,我们要先使用float转换成 浮点数,在转化成int()型
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-6-1 19:15:19 | 显示全部楼层
因为你这个5.5不是浮点型,而是字符串,你得先float(temp),才能用int
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-1 20:22:17 | 显示全部楼层
ooxx7788 发表于 2017-6-1 19:15
因为你这个5.5不是浮点型,而是字符串,你得先float(temp),才能用int


为什么float能讲5.5转成浮点,int就不行?
guess = int(float(temp))
我把程序改成这样发现输什么数字都行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-1 20:36:57 | 显示全部楼层
int函数不能接受字面值为浮点数的字符串,即当执行int('5.5')的时候就会报错,这种时候需要要用float转化成浮点数, a = float(input())
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-1 20:42:26 | 显示全部楼层
dzmpk007 发表于 2017-6-1 20:22
为什么float能讲5.5转成浮点,int就不行?
guess = int(float(temp))
我把程序改成这样发现输什么数 ...

那你就不管什么数字都先转成浮点,再转成整型。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-1 21:00:36 | 显示全部楼层
酷学 发表于 2017-6-1 20:36
int函数不能接受字面值为浮点数的字符串,即当执行int('5.5')的时候就会报错,这种时候需要要用float转化成 ...

意思是int不能将字符串变成整形,float则可以将字符串转化成浮点型?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-1 21:17:20 | 显示全部楼层
ooxx7788 发表于 2017-6-1 20:42
那你就不管什么数字都先转成浮点,再转成整型。

给点原理嘛,让我好理解一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-1 21:39:56 | 显示全部楼层
ooxx7788 发表于 2017-6-1 20:42
那你就不管什么数字都先转成浮点,再转成整型。

能不能给个原理?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-2 08:31:24 | 显示全部楼层
A = random.randint(1,10)这句话你没有理解  randint只能随机产生整数  而不能产生浮点数  输入5.5当然你会错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-2 08:39:46 | 显示全部楼层
dzmpk007 发表于 2017-6-1 21:39
能不能给个原理?

这有什么原理,int不能把小数的字符串转为整型,那就用float把所有数字字符串转为浮点型,然后再用int转为整型。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-2 08:44:50 | 显示全部楼层    本楼为最佳答案   
因为int函数不接受字面值为浮点数的字符串,在使用input(),输入的类型都是字符串类型,我们要先使用float转换成 浮点数,在转化成int()型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-2 10:09:33 | 显示全部楼层
dzmpk007 发表于 2017-6-1 21:00
意思是int不能将字符串变成整形,float则可以将字符串转化成浮点型?

原句是:int不能接受字面值为浮点数的字符串
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-2 14:17:49 | 显示全部楼层
sunnychou 发表于 2017-6-2 08:44
因为int函数不接受字面值为浮点数的字符串,在使用input(),输入的类型都是字符串类型,我们要先使用float转 ...

多谢楼主,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-1 03:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表