尝试在Python中创建一个只接受1到5之间的数字而不接受字符串的函数
我正在创建一个函数,从一个问题接收一个介于1和5之间的数字(likert标度)。当用户输入错误的INT my loop is ok时,问题会重复。但是如果用户也输入了字符串,我想重复这个问题。但在这种情况下,程序会崩溃“ValueError:invalid literal for int(),以10为基数”尝试在Python中创建一个只接受1到5之间的数字而不接受字符串的函数,python,function,validation,Python,Function,Validation,我正在创建一个函数,从一个问题接收一个介于1和5之间的数字(likert标度)。当用户输入错误的INT my loop is ok时,问题会重复。但是如果用户也输入了字符串,我想重复这个问题。但在这种情况下,程序会崩溃“ValueError:invalid literal for int(),以10为基数” def likert(msg): 尽管如此: L=int(输入(味精)) 如果1在检查其类型之前将L强制转换为int。所以当L是一个字符串时,你的程序试图将它转换为int,结果它崩溃了。只有
def likert(msg):
尽管如此:
L=int(输入(味精))
如果1在检查其类型之前将L强制转换为int。所以当L是一个字符串时,你的程序试图将它转换为int,结果它崩溃了。只有在确定L不是字符串时,才应该执行数字运算。解决方案是使用try-and-catch或使用if语句处理它。int()
总是返回一个整数,因此type(L)=int
总是为真。如果用户键入的内容不是有效的整数,int()
将发出错误信号
如果用户输入的不是整数,请使用try/except
处理错误
def likert(msg):
while True:
try:
L = int(input(msg))
except ValueError:
print('\033[031mError [1 to 5] only\033[m')
continue
if 1 <= L <= 5:
return L
else:
print('\033[031mError [1 to 5] only\033[m')
def likert(msg):
尽管如此:
尝试:
L=int(输入(味精))
除值错误外:
打印('\033[031mError[1到5]仅\033[m')
持续
如果1不立即尝试将输入抽象为int
,请执行以下操作:
def likert():
while True:
L = input()
if L.isalpha:
#if input is string
print('\033[031mError [1 to 5] only\033[m')
continue
elif L.isdigit:
#if input is int
if 1 <= L <= 5:
#if input is within range
return L
else:
#if input is out of range
print('\033[031mError [1 to 5] only\033[m')
continue
def likert():
尽管如此:
L=输入()
如果L.isalpha:
#如果输入是字符串
打印('\033[031mError[1到5]仅\033[m')
持续
elif L.isdigit:
#如果输入为int
如果我使用try:…except ValueError:…
捕获异常并处理它。谢谢!我正在观看youtube教程,他们中还没有人了解这一部分(try/except),但它确实有帮助!这是一个相对高级的主题,你不太可能在初学者教程中看到它。
def likert():
while True:
L = input()
if L.isalpha:
#if input is string
print('\033[031mError [1 to 5] only\033[m')
continue
elif L.isdigit:
#if input is int
if 1 <= L <= 5:
#if input is within range
return L
else:
#if input is out of range
print('\033[031mError [1 to 5] only\033[m')
continue