hayomodo 发表于 2019-5-2 16:21:36

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

本帖最后由 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("你是牲口吗")

这样应该可以了

jackz007 发表于 2019-5-2 18:00:33

本帖最后由 jackz007 于 2019-5-2 18:02 编辑

      输入浮点数这一句不灵,B = int(A),应该这么改,B = float(A)
       楼主是新疆人?

暗pluto 发表于 2019-5-2 18:07:17

int是整形,16.8是小数,浮点型

wwhywhy 发表于 2019-5-2 18:10:36

a = 16.8
b = int(a)
这样就没有问题,是为啥?

hayomodo 发表于 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这个值做一个区间判断为什么不行呢?

hayomodo 发表于 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为什么不能被后面的代码进行运算呢?
我不是新疆人啊哈哈哈哈哈 为什么这么问呢?

jackz007 发表于 2019-5-2 19:22:42

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 是字符串的时候,却只能接受整型数形式的,浮点数形式的不灵。

wwhywhy 发表于 2019-5-2 20:54:12

本帖最后由 wwhywhy 于 2019-5-2 20:57 编辑

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

所以在我们不知道输入的是整数还是浮点数的时候,需要先转换成float(), 然后调用int(),这样就保险了!

2081259553 发表于 2019-5-3 05:10:28

数的类型不同啊,一个整数一个浮点数
页: [1]
查看完整版本: int问题 请大神帮看,这里的int是不是没起作用啊,为什么呢?感谢