鱼C论坛

 找回密码
 立即注册
查看: 2581|回复: 8

int问题 请大神帮看,这里的int是不是没起作用啊,为什么呢?感谢

[复制链接]
发表于 2019-5-2 16:21:36 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 hayomodo 于 2019-5-2 19:09 编辑

代码是这样(论坛等级不够好像无法传图,只能复制代码了)
A=input("你的丁丁有多长:")
B=int(A)
if 0<=B<=13:
    print("垃圾")
elif 14<=B<=17:
    print("还可以")
elif 18<=B<=23:
    print("牛逼!")
else:
    print("你是牲口吗")

输出结果如下(输16的时候正常,输16.8就不对了)

================== RESTART: D:/学习什么的/python/练习文件/4.30练习2.py ==================
你的丁丁有多长:16
还可以
>>>
================== RESTART: D:/学习什么的/python/练习文件/4.30练习2.py ==================
你的丁丁有多长:16.8
Traceback (most recent call last):
  File "D:/学习什么的/python/练习文件/4.30练习2.py", line 2, in <module>
    B=int(A)
ValueError: invalid literal for int() with base 10: '16.8'
>>>

请问各位大神 这是为什么呢
--------------------------------------------------------------------------------------------------分割-----------------------------------------------------------------------------------------------------------------------------------------

换成float确实可以了,这个时候也意识到如果输入13和14之间的小数,弹出的结果就是"你是牲口吗",是个bug

重新改一下代码

A=input("你的丁丁有多长:")
B=float(A)
if 0<=B<14:
    print("垃圾")
elif 14<=B<18:
    print("还可以")
elif 18<=B<=23:
    print("牛逼!")
else:
    print("你是牲口吗")

这样应该可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-2 18:00:33 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2019-5-2 18:02 编辑

      输入浮点数这一句不灵,B = int(A),应该这么改,B = float(A)
       楼主是新疆人?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-2 18:07:17 | 显示全部楼层
int是整形,16.8是小数,浮点型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-2 18:10:36 | 显示全部楼层
a = 16.8
b = int(a)
这样就没有问题,是为啥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-2 19:01:03 | 显示全部楼层
wwhywhy 发表于 2019-5-2 18:10
a = 16.8
b = int(a)
这样就没有问题,是为啥?

我也是这个疑问,b的赋值是int(a),那么输入16.8后b不就应该是16了吗?对于16这个值做一个区间判断为什么不行呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-2 19:04:01 | 显示全部楼层
jackz007 发表于 2019-5-2 18:00
输入浮点数这一句不灵,B = int(A),应该这么改,B = float(A)
       楼主是新疆人?

感谢,换float确实可以,但是既然b=int(a) 那么a=16.8的时候,b就是16,这个16为什么不能被后面的代码进行运算呢?
我不是新疆人啊哈哈哈哈哈 为什么这么问呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-2 19:22:42 From FishC Mobile | 显示全部楼层
hayomodo 发表于 2019-5-2 19:04
感谢,换float确实可以,但是既然b=int(a) 那么a=16.8的时候,b就是16,这个16为什么不能被后面的代码进 ...

     如果一定要 int ,那就这么用 B = int(float(A)),当 A 是浮点数的时候, int(A) 是可以的,但是,当 A 是字符串的时候,却只能接受整型数形式的,浮点数形式的不灵。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-2 20:54:12 | 显示全部楼层
本帖最后由 wwhywhy 于 2019-5-2 20:57 编辑

变量A的类型是str:
type(A)
<class 'str'>
所以需要将A先转成float(),然后才能执行int()

所以在我们不知道输入的是整数还是浮点数的时候,需要先转换成float(), 然后调用int(),这样就保险了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-3 05:10:28 From FishC Mobile | 显示全部楼层
数的类型不同啊,一个整数一个浮点数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 10:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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