我想得到这个
rawstr = input('enter a number: ')
try:
ival = abs(rawstr)
except:
ival = 'boob'
if ival.isnumeric():
print('nice work')
else:
print('not a number')
识别负数,但我不明白为什么不管输入是什么,它总是返回“不是数字”
这本书最初的目的是学习try/except函数,但我希望它也能识别负数,而不是对任何小于0的值返回“不是数字
rawstr = input('enter a number: ')
try:
ival = int(rawstr)
except:
ival = -1
if ival > 0:
print('nice work')
else:
print('not a number')
^这是我想读取负数的原始代码
3条答案
按热度按时间ax6ht2ek1#
abs
函数需要一个int,但在第一个代码块中传递给它的是一个string,在第二个代码块中,将string转换为int--这在第一个代码块中是缺失的。所以把两者结合起来:
第二个问题是,
isnumeric
是字符串方法,而不是数字方法,所以不要像在第一个代码块中那样使用它,而要将ival >= 0
作为if
条件。因此:
缺点是
abs
实际上是一个非负数,并且失去了符号。合并这两部分,然后执行以下操作:
x9ybnkn62#
Python的输入默认为字符串,我们需要在使用它们之前将它们转换为相关的数据类型。
在您的代码中:
在
ival = abs(rawstr)
行,rawtr
总是字符串,但abs()
需要int类型。在这一行你会得到一个异常,
if ival.isnumeric()
总是把ival当作boob
,它不是一个数字,所以你得到的是not a number
输出。更新代码以修复此问题:
qv7cva1a3#
可以将abs函数更改为int函数,以将输入字符串转换为整数