鱼C论坛

 找回密码
 立即注册
查看: 2209|回复: 8

[已解决]麻烦解答一下,为什么会报错?

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

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

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

x
num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

if int(num1) < int(num2):
    print("第一个数比第二个数小!")

if int(num1) > int(num2):
    print("第一个数比第二个数大!")

if int(num1) == int(num2):
    print("第一个数和第二个数一样大!")


报错提示:
请输入第一个整数:1.23
请输入第二个整数:23
Traceback (most recent call last):
  File "C:/Users/asus/Desktop/test666.py", line 4, in <module>
    if int(num1) < int(num2):
ValueError: invalid literal for int() with base 10: '1.23'
>>>

最佳答案
2020-11-1 17:54:03
18508410033 发表于 2020-11-1 17:48
你是非数字型的文本用float肯定会报错的,你需要判断num1和num2是否是字母可以用 s.isalpha()。s为字符串 ...
def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass
 
    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass
 
    return False

这个自定义函数可以判断输入的文本是否是数字了,能够识别浮点数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-1 15:53:47 | 显示全部楼层
"1.23"是一个字符串,无法转换为int类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-1 16:09:58 | 显示全部楼层
lhgzbxhz 发表于 2020-11-1 15:53
"1.23"是一个字符串,无法转换为int类型

为什么1.23是字符串,我明白输入的是一个浮点型的1.23啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-1 16:16:54 | 显示全部楼层
星星飞 发表于 2020-11-1 16:09
为什么1.23是字符串,我明白输入的是一个浮点型的1.23啊!

我搜了一下因为input()返回值是字符串,但是我还是不明白,我已经加了int()对其返回值进行转换,为什么会报错?  还有这段程序是pytho第五讲的课后作业的答案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 16:42:56 | 显示全部楼层
星星飞 发表于 2020-11-1 16:16
我搜了一下因为input()返回值是字符串,但是我还是不明白,我已经加了int()对其返回值进行转换,为什么 ...

int()只能转换整数字符串
比如说"123"这个字符串可以转化为整数
但是"1.23"这个字符串虽然可以转换为数字,但只能转换为小数(浮点数),所以int()会保存
如果真的要转换,可以先用float()转化为浮点数,再用int()转化为整数
例如:num1 = int(float(input()))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-1 16:53:56 | 显示全部楼层
lhgzbxhz 发表于 2020-11-1 16:42
int()只能转换整数字符串
比如说"123"这个字符串可以转化为整数
但是"1.23"这个字符串虽然可以转换为数 ...

我已经照你说的改了
num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

num1 = int(float(num1))
num2 = int(float(num2))

if num1 < num2:
    print("第一个数比第二个小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")



输入浮点型已经没有报错了:
但是输入字符串他还会报错
==================== RESTART: E:\python文件文件\第四章的\test.py ====================
请输入第一个整数:'f'
请输入第二个整数:'g'
Traceback (most recent call last):
  File "E:\python文件文件\第四章的\test.py", line 4, in <module>
    num1 = int(float(num1))
ValueError: could not convert string to float: "'f'"
>>>
==================== RESTART: E:\python文件文件\第四章的\test.py ====================
请输入第一个整数:g
请输入第二个整数:j
Traceback (most recent call last):
  File "E:\python文件文件\第四章的\test.py", line 4, in <module>
    num1 = int(float(num1))
ValueError: could not convert string to float: 'g'
>>>
这个问题我该怎么解决?
麻烦了!大佬!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 17:16:18 From FishC Mobile | 显示全部楼层
别随便把什么东西都放在float里喂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 17:48:59 | 显示全部楼层
星星飞 发表于 2020-11-1 16:53
我已经照你说的改了
num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

你是非数字型的文本用float肯定会报错的,你需要判断num1和num2是否是字母可以用 s.isalpha()。s为字符串。如果输入是字母就要重新input,要求输入数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 17:54:03 | 显示全部楼层    本楼为最佳答案   
18508410033 发表于 2020-11-1 17:48
你是非数字型的文本用float肯定会报错的,你需要判断num1和num2是否是字母可以用 s.isalpha()。s为字符串 ...
def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass
 
    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass
 
    return False

这个自定义函数可以判断输入的文本是否是数字了,能够识别浮点数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 00:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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