Python 如何比较';是一个带整数的字符串吗?

Python 如何比较';是一个带整数的字符串吗?,python,string,integer,assert,assertion,Python,String,Integer,Assert,Assertion,因此,我想问用户他在Python中的年龄。我想在输入为0或更低以及输入不是整数时给出一个断言错误,例如,用户键入逗号或其他内容。这就是我现在拥有的 test = input("How old are you?: ") assert test > 0 and type(test) == int, "Must be more than 0 and only numbers" 这是行不通的,因为当用户输入一个像15这样的整数时,它被认为是一个字符串,并且

因此,我想问用户他在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"
test = input("How old are you?: ")
assert test.isdigit(), "Must be a number"
assert int(test) > 0, "Must be more than 0"
try:
    test = int(input("How old are you?: "))
    assert test > 0, "Must be more than 0"
except ValueError:
    print("only numbers")

以上内容适用于第一个断言。当用户输入-1或0时,它会得到一个断言错误。但是,它不适用于第二个断言,因为该类型已经是整数。如何解决这个问题?

在本例中,test将始终是int,否则将出现错误,因为Python无法将输入转换为int

您可以这样做:

test = int(input("How old are you?: "))
assert test > 0 and type(test) == int, "Must be more than 0 and only numbers"
test = input("How old are you?: ")
assert test.isdigit(), "Must be a number"
assert int(test) > 0, "Must be more than 0"
try:
    test = int(input("How old are you?: "))
    assert test > 0, "Must be more than 0"
except ValueError:
    print("only numbers")
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")
试试看:
test=int(输入(“你多大了?:”)
除值错误外:
打印(“必须是数字”)
如果test
int(',')
已经生成了一个
ValueError
,那么您可以捕获该错误并将其按如下方式拆分:

test = int(input("How old are you?: "))
assert test > 0 and type(test) == int, "Must be more than 0 and only numbers"
test = input("How old are you?: ")
assert test.isdigit(), "Must be a number"
assert int(test) > 0, "Must be more than 0"
try:
    test = int(input("How old are you?: "))
    assert test > 0, "Must be more than 0"
except ValueError:
    print("only numbers")
这也是习惯用法。

试试:
val=int(用户输入)
打印(“输入是一个整数。number=,val”)
除值错误外:
尝试:
val=浮点(用户输入)
打印(“输入为浮点数。number=,val”)
除值错误外:
打印(“不,输入不是数字,是字符串”)

用这样的方法…

这能回答你的问题吗@Yan我仍然不明白,我需要写一个函数吗?对于正整数,你可以使用
。isdigit
,它可以处理正整数;这在这里是合适的,因为您只需要大于0的整数。@Yan我在帖子中确实看到了这一点,但当我断言test.isdigit和type(test)==int时,当用户说5对不起,我不知道时,它会给我一个断言错误。也许我会尝试找到另一个解决这个问题的方法。