鱼C论坛

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

[已解决]输入数值取整报错

[复制链接]
发表于 2020-10-5 02:11:45 | 显示全部楼层 |阅读模式

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

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

x
求助贴:
输入数值,取整(int, round)后判断级别,如下,   但运行输入66.6(带小数都)报错

score1=input('please type your score:')
score=int(score1)
level=('d' if 0<=score<60 else
       'c' if 60<=score<80 else
       'b' if 80<=score<90 else
       'a' if 90<=score<100 else
       's' if score==100 else
       'please type 0-100')
print(score,' is level',level)


报错:
please type your score:66.6
Traceback (most recent call last):
  File "C:/Users/Administrator/Desktop/1game.py", line 2, in <module>
    score=int(score1)
ValueError: invalid literal for int() with base 10: '66.6'

取整的INT ,换成ROUND 也是报错 TypeError: type str doesn't define __round__ method。

请教大佬是怎么回事,该如何对输入的数值取整?谢谢大佬!

最佳答案
2020-10-5 13:42:47
新手学习:
input接收的对象,同意按字符串处理,自然需要转换为数值类型。
int(),接收整数字符串,float()接收浮点字符串,唯独eval()函数则是来者不拒.
不转换为数值类型,round 函数无力可施。
我觉得最方便的还是直接使用eval()函数
score1=input('please type your score:')
score=eval(score1)
level=('d' if 0<=score<60 else
       'c' if 60<=score<80 else
       'b' if 80<=score<90 else
       'a' if 90<=score<100 else
       's' if score==100 else
       'please type 0-100')
print(score,' is level',level)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-5 07:34:52 | 显示全部楼层
如果想想下取整的话:score1 = int(eval(score))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-10-5 10:24:26 | 显示全部楼层
字符串没办法直接int小数。

求整数,你可以在前面判断个isdigit,小数的话是会判断False的。

求小数,可以不int,直接float。36.0也算是小数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-10-5 10:58:54 From FishC Mobile | 显示全部楼层
同意楼上,可以先转换为浮点数在转整数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-5 11:31:43 | 显示全部楼层
荣耀 发表于 2020-10-5 10:58
同意楼上,可以先转换为浮点数在转整数

但是如果我输入66呢,程序还是会报错
用eval函数不管输入整数还是小数都能实现转换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-5 13:42:47 | 显示全部楼层    本楼为最佳答案   
新手学习:
input接收的对象,同意按字符串处理,自然需要转换为数值类型。
int(),接收整数字符串,float()接收浮点字符串,唯独eval()函数则是来者不拒.
不转换为数值类型,round 函数无力可施。
我觉得最方便的还是直接使用eval()函数
score1=input('please type your score:')
score=eval(score1)
level=('d' if 0<=score<60 else
       'c' if 60<=score<80 else
       'b' if 80<=score<90 else
       'a' if 90<=score<100 else
       's' if score==100 else
       'please type 0-100')
print(score,' is level',level)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 00:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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