isabel202012 发表于 2020-12-30 13:01:31

纯小白一枚,求助各位大神

完全没有一点计算机语言类功底,在线学习了小甲鱼的视频,作业中出现以下问题。求助各位大神,好人一生平安{:5_108:}

tem=input("请输入1—100之间的数字:")
num=int(tem)
if 1<=num<=100:
    print("你好聪明!")
else:
    print("输错了!!!")

以上是编辑的代码,下面是运行情况:

请输入1—100之间的数字:2
你好聪明!
>>>
============================ RESTART: D:/练习题/calc.py ===========================
请输入1—100之间的数字:2.3
Traceback (most recent call last):
File "D:/练习题/calc.py", line 2, in <module>
    num=int(tem)
ValueError: invalid literal for int() with base 10: '2.3'
>>>

求问:为什么输入2.3就出问题,num=int(tem)不是就为了把输入的任何数字取整吗?

昨非 发表于 2020-12-30 13:05:29

本帖最后由 昨非 于 2020-12-30 13:06 编辑

input函数返回的是字符串
而字符串中存在小数点时是不能转化为int型的
可以考虑加个eval
a,b = eval(input("请输入两个数,用逗号隔开\n"))    #即可输入整数也可以输入小数,
                                                 #还可以同时输入小数或整数
print(type(a),":",a,type(b),":",b)
测试结果:
请输入两个数,用逗号隔开
100,10.01
<class 'int'> : 100 <class 'float'> : 10.01

小伤口 发表于 2020-12-30 13:06:21

想输入小数的话就用float吧tem=input("请输入1—100之间的数字:")
num=float(tem)
if 1<=num<=100:
    print("你好聪明!")
else:
    print("输错了!!!")

逃兵 发表于 2020-12-30 13:10:25

tem=input()
tem返回的是字符串类型
比如你输入的是2
tem='2'
当你输入2.3时
tem='2.3'

int函数可以将为整数的字符串转化为整型
但是小数的字符串会报错
例如:
>>> int('24')
24
>>> int('2.4')
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
    int('2.4')
ValueError: invalid literal for int() with base 10: '2.4'

如果想将浮点数的字符串转化为整数,需要先转化成浮点型
float()
再转化成整型
int()

tem=input("请输入1—100之间的数字:")
num=int(float(tem))
if 1<=num<=100:
    print("你好聪明!")
else:
    print("输错了!!!")

以上是编辑的代码,下面是运行情况:

请输入1—100之间的数字:2
你好聪明!

tryhi 发表于 2020-12-30 16:54:19

有句话说得好,程序设计要防止各种杠精,让你输整数非要输小数

isabel202012 发表于 2020-12-30 18:52:08

感谢各位大神,完美的解惑了。大家都是好人{:5_110:}
页: [1]
查看完整版本: 纯小白一枚,求助各位大神