星星飞 发表于 2020-11-1 15:52:02

麻烦解答一下,为什么会报错?

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'
>>>

lhgzbxhz 发表于 2020-11-1 15:53:47

"1.23"是一个字符串,无法转换为int类型

星星飞 发表于 2020-11-1 16:09:58

lhgzbxhz 发表于 2020-11-1 15:53
"1.23"是一个字符串,无法转换为int类型

为什么1.23是字符串,我明白输入的是一个浮点型的1.23啊!

星星飞 发表于 2020-11-1 16:16:54

星星飞 发表于 2020-11-1 16:09
为什么1.23是字符串,我明白输入的是一个浮点型的1.23啊!

我搜了一下因为input()返回值是字符串,但是我还是不明白,我已经加了int()对其返回值进行转换,为什么会报错?还有这段程序是pytho第五讲的课后作业的答案。

lhgzbxhz 发表于 2020-11-1 16:42:56

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

int()只能转换整数字符串
比如说"123"这个字符串可以转化为整数
但是"1.23"这个字符串虽然可以转换为数字,但只能转换为小数(浮点数),所以int()会保存
如果真的要转换,可以先用float()转化为浮点数,再用int()转化为整数
例如:num1 = int(float(input()))

星星飞 发表于 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'
>>>
这个问题我该怎么解决?
麻烦了!大佬!

@_sunshine 发表于 2020-11-1 17:16:18

别随便把什么东西都放在float里喂

18508410033 发表于 2020-11-1 17:48:59

星星飞 发表于 2020-11-1 16:53
我已经照你说的改了
num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")


你是非数字型的文本用float肯定会报错的,你需要判断num1和num2是否是字母可以用 s.isalpha()。s为字符串。如果输入是字母就要重新input,要求输入数字

18508410033 发表于 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

这个自定义函数可以判断输入的文本是否是数字了,能够识别浮点数
页: [1]
查看完整版本: 麻烦解答一下,为什么会报错?