鱼C论坛

 找回密码
 立即注册
查看: 1555|回复: 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函数可以将为整数的字符串转化为整型
但是小数的字符串会报错
例如:
  1. >>> int('24')
  2. 24
  3. >>> int('2.4')
  4. Traceback (most recent call last):
  5.   File "<pyshell#21>", line 1, in <module>
  6.     int('2.4')
  7. ValueError: invalid literal for int() with base 10: '2.4'
复制代码


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

  1. tem=input("请输入1—100之间的数字:")
  2. num=int(float(tem))
  3. if 1<=num<=100:
  4.     print("你好聪明!")
  5. else:
  6.     print("输错了!!!")
  7.   
  8. 以上是编辑的代码,下面是运行情况:

  9. 请输入1—100之间的数字:2
  10. 你好聪明!
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-30 13:05:29 | 显示全部楼层
本帖最后由 昨非 于 2020-12-30 13:06 编辑

input函数返回的是字符串
而字符串中存在小数点时是不能转化为int型的
可以考虑加个eval
  1. a,b = eval(input("请输入两个数,用逗号隔开\n"))    #即可输入整数也可以输入小数,
  2.                                                  #还可以同时输入小数或整数
  3. print(type(a),":",a,type(b),":",b)
复制代码

测试结果:
  1. 请输入两个数,用逗号隔开
  2. 100,10.01
  3. <class 'int'> : 100 <class 'float'> : 10.01
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-30 13:06:21 | 显示全部楼层
想输入小数的话就用float吧
  1. tem=input("请输入1—100之间的数字:")
  2. num=float(tem)
  3. if 1<=num<=100:
  4.     print("你好聪明!")
  5. else:
  6.     print("输错了!!!")
  7.   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-30 13:10:25 | 显示全部楼层    本楼为最佳答案   
tem=input()
tem返回的是字符串类型
比如你输入的是2
tem='2'
当你输入2.3时
tem='2.3'

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


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

  1. tem=input("请输入1—100之间的数字:")
  2. num=int(float(tem))
  3. if 1<=num<=100:
  4.     print("你好聪明!")
  5. else:
  6.     print("输错了!!!")
  7.   
  8. 以上是编辑的代码,下面是运行情况:

  9. 请输入1—100之间的数字:2
  10. 你好聪明!
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-30 16:54:19 | 显示全部楼层
有句话说得好,程序设计要防止各种杠精,让你输整数非要输小数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-30 18:52:08 | 显示全部楼层
感谢各位大神,完美的解惑了。大家都是好人
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 13:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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