def ask_input(prompt, error):
while True:
value = input(prompt)
try:
int(value) > 1
break
except ValueError:
print(error)
else:
return value
所以我想创建一个简单的函数,如果它的integrel大于1则返回值。到目前为止,函数似乎接受了我放入的任何内容。我是否需要创建多个循环或者我可以在一段时间内集成两个语句循环?
答案 0 :(得分:1)
使用if
声明:
while True:
value = input(prompt)
try:
if int(value) > 1:
return int(value) # return the value if condition met
except ValueError as error:
print(error)
答案 1 :(得分:0)
使用 try / except 仅接受整数。然后使用if
条件测试输入大于1的条件,如果满足条件则返回值。在这种情况下使用raw_input()
会更好,因为您希望将整数文字作为输入,而input()
也可以评估可能导致未经过输入的输入的表达式。
def ask_input(prompt, error):
while True:
try:
value = int(raw_input(prompt))
if value > 1: # Return the number if it's greater than 1.
return value
except ValueError: # Catch exception if value is not a base 10 int.
print error
答案 2 :(得分:0)
您的代码会提示用户输入任何可以转换为整数的内容,无论是否为> 1,然后返回None。这不是你想要的。
这里有两个不同的问题:
int(value) > 1
如果输入值不能解析为整数,那么这将引发您捕获并正确处理的ValueError。
如果输入值可解析为整数,则int(value)
会将其转换为实际整数,该整数将与1进行比较。但是,此比较的结果完全被忽略,因为它不存储在变量或使用
然后break
将立即离开while
循环,然后到达ask_input
的末尾,没有return语句。因此,else
的{{1}}条款会被忽略。
我建议使用以下代码:
try