鱼C论坛

 找回密码
 立即注册
查看: 1126|回复: 5

[已解决]纯小白一枚,求助各位大神

[复制链接]
发表于 2020-12-30 13:01:31 | 显示全部楼层 |阅读模式

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

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

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

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: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
你好聪明!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-30 13:06:21 | 显示全部楼层
想输入小数的话就用float吧
tem=input("请输入1—100之间的数字:")
num=float(tem)
if 1<=num<=100:
    print("你好聪明!")
else:
    print("输错了!!!")
  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
你好聪明!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-30 16:54:19 | 显示全部楼层
有句话说得好,程序设计要防止各种杠精,让你输整数非要输小数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-30 18:52:08 | 显示全部楼层
感谢各位大神,完美的解惑了。大家都是好人
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 20:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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