如何让Python检查变量是数字还是字母?

时间:2021-05-08 22:05:44

标签: python

嗨,我有一个问题...

作为一名 Python 初学者,我想问一下如何让我的代码检查输入来自用户数字字母 ?


if age == int or float:
    print("Ok, zavrsili smo sa osnovnim informacijama! Da li zelite da ih uklopimo i pokazemo Vase osnovne informacije? DA ili NE ?")

elif age == False:
    print("Hej, to nije broj... Pokusaj ponovo")

这是我遇到问题的代码的一部分。我想声明如果用户输入他的年龄作为数字,代码继续。但是,如果用户输入的不是数字,代码会告诉他从头开始(所有打印语句都是用塞尔维亚语写的,希望你不要介意:D)

4 个答案:

答案 0 :(得分:1)

最简单的方法是在 while 循环中提示用户输入,try 将其转换为 float,如果您使用 break重新成功。

while True:
    try:
        age = float(input("Please enter your age as a number: "))
        break
    except ValueError:
        print("That's not a number, please try again!")

# age is guaranteed to be a numeric value (float) -- proceed!

答案 1 :(得分:0)

isinstance(x, int) # True

或者你可以试试

使用断言语句

assert <condition>,<error message>

例如

assert type(x) == int, "error"

答案 2 :(得分:0)

假设您通过 input(..) 调用从用户那里获取值 'age' 然后检查 age 是否为数字:

age = input('Provide age >')
if age.isnumeric():
    age = int(age)
    print("Ok, zavrsili smo sa osnovnim informacijama! Da li zelite da ih uklopimo i pokazemo Vase osnovne informacije? DA ili NE ?")
else:
     print("Hej, to nije broj... Pokusaj ponovo")

答案 3 :(得分:0)

使用函数检查字符串类型

def get_type(s):
    ''' Detects type of string s
    
       Return int if int, float if float, or None for non-numeric string '''
    if s.isnumeric():
        return int      # only digits
    elif s.replace('.', '', 1).isnumeric():
        return float    # single decimal
    else:
        return None     # returns None for non-numeric string


# Using function
age = input("What is your age?")
if not get_type(age) is None:
    print(f'Valid age {age}')
else:
    print(f'Value {age} is not a valid age')

示例运行

What is your age?25
Valid age 25

What is your age?12.5
Valid age 12.5

What is your age?12.3.5
Value 12.3.5 is not a valid age