如何检查变量是否为if else语句相同的数据类型?



我目前正在创建一个简单的网上商店功能这需要用户检查他们的年龄是否在18岁以上。但是,我不知道如何检查用户输入是整数还是字符串。我很感激你的帮助。

def input_age():
age = int(input('Please enter your agen'))
if age <= 18:
print('Sorry, you are too young. Don't shop with us.')
quit()
elif isinstance(age,int): #Check whether age is int
print('Please insert numbers only')
input_age()
elif age > 18:
name = str(input('Please type your namen'))
print('Welcome ' + name.title() + '.n')
input_age() #Execute age function 

在这种情况下,有多种方法可用于确定数据类型—但是,每种方法都略有不同。Python有Type()函数。虽然这个函数有三个参数type(object, bases, dict),但只需要一个,对象。如果您想了解其他参数,请查看这里。可以使用if else语句来确定对象类型是否为字符串-

import sys #to be used for error message
user_input = input("prompt")
input_type = Type(user_input)
if input_type == int:
do_whatever()
else:
sys.exit("Please try again with an integer input")

然而,由于input()函数的性质,这在这个实例中不起作用,因为input()总是返回一个字符串——然而,其他两个方法仍然有效。

另一种方法是使用Exception,正如Sruthi v所提到的,在转换为整数时,如果输入字符串,则会发生错误。

try:
user_input = input("prompt")
user_input = int(user_input)
except ValueError:
print("Please run the program again and enter an integer")
最后,您可以使用isinstance()函数——本质上是Type函数的替代品。isinstance()有两个值,(object, type)。根据对象类型是否与参数type相同,将返回true或false的bool值。
import sys
user_input = input("prompt")
if isinstance(user_input, int):
do_whatever()
else:
sys.exit('Run the program again with an integer input')

但是,您已经在文件的开头检查了int -如果检测到任何不是int的值将会发生错误。因此,在您的特定情况下,不需要检查值是否为int。您可以使用异常在输入非整数值时打印自定义消息,但是再次检查该值是否为int是重复的,并且使用不必要的资源。

最新更新