如何解决如何比较用户输入的字符串和整数?
所以我想问用户他在Python中多大了。当输入为0或更低且输入不是整数时,我想给出一个断言错误,例如,用户键入诸如逗号之类的内容。这就是我现在拥有的
test = input("How old are you?: ")
assert test > 0 and type(test) == int,"Must be more than 0 and only numbers"
这是行不通的,因为当用户键入15之类的整数时,它被认为是字符串,并且在字符串和整数之间不允许使用>。所以我试图使输入成为整数,像这样:
test = int(input("How old are you?: "))
assert test > 0 and type(test) == int,"Must be more than 0 and only numbers"
以上内容适用于第一个断言。当用户输入-1或0作为输入时,它将得到一个断言错误。但是,它对于第二个断言不起作用,因为类型已经是整数。我该如何解决?
解决方法
在此示例中,test始终为int或会出现错误,因为Python无法将输入转换为int。
您可以这样做:
test = input("How old are you?: ")
assert test.isdigit(),"Must be a number"
assert int(test) > 0,"Must be more than 0"
但是在Python中,我们通常会通过例外解决此类问题,请考虑以下示例:
try:
test = int(input("How old are you?: "))
except ValueError:
print("Must be a number")
if test <= 0:
print("Must be more than 0")
,
int(',')
将已经产生一个ValueError
,因此您可以捕获并像这样将其拆分:
try:
test = int(input("How old are you?: "))
assert test > 0,"Must be more than 0"
except ValueError:
print("only numbers")
这也遵循EAFP习惯用法。
,try:
val = int(user_input)
print("Input is an integer number. Number = ",val)
except ValueError:
try:
val = float(user_input)
print("Input is a float number. Number = ",val)
except ValueError:
print("No.. input is not a number. It's a string")
使用类似这样的内容...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。