描述:编写一个不带参数的函数task_4_1。调用时,提示用户输入字符串“请输入您的入学编号:”。首先删除前导和尾随空格。然后使用内置功能检查输入是否为整数。 如果输入的不是数字,则输出以下内容:“无效的输入。不是数字……” 如果输入是有效整数但大于(或等于) 12000000,输出以下内容:“无效输入。无效的入学编号……” 重复要求用户使用上面的提示输入他们的入学编号。 用户输入有效数字后,您的函数应将其返回(转换为实际整数)
我的问题是“如果输入是有效整数,但大于(或等于)12000000,输出...”,这不是我编写此条件的方式,它会产生一个错误,指出“'> = ''在'str'和'int'的实例之间不支持”,而且我不知道如何使其以正确的方式工作。.
import string
def task_4_1():
num = input("Please enter your matriculation number: ")
if(num.isdigit()):
return(int(num.strip()))
elif num>=12000000:
print("Invalid input. Not a valid matriculation number...")
num = input("Please enter your matriculation number: ")
else:
print("Invalid input. Not a valid matriculation number...")
答案 0 :(得分:0)
您使用if条件的顺序错误。 大于12000000的数字也是“数字”,因此始终满足第一个条件,而从不执行第二个条件。这是正确的代码,可以递归解决再次请求输入的问题。
import string
def task_4_1():
num = input("Please enter your matriculation number: ")
if(num.isdigit()):
n = (int(num.strip()))
if n >= 12000000:
print("Invalid input. Not a valid matriculation number...")
task_4_1()
else:
return(n)
else:
print("Invalid input. Not a valid matriculation number...")
task_4_1()
答案 1 :(得分:0)
还有另一种方法……while循环样式可返回选中输入的结果(如果是数字)。在所有其他情况下,它会一直循环播放,直到您提供的数字在设置的数字范围内为止。
import string, time
result = 0 # arbitrary value for variable chosen. You might want -1 or something else?
def task_4_1(result):
while result == 0:
num = input("Please enter your matriculation number: ")
if(num.isdigit()):
n=(int(num.strip()))
if 0 < n < 12000000: # digit selection parameters "0" and "12000000".
result = n
else:
print ("Invalid input. Not a valid matriculation number...")
time.sleep(2) # pausing 2 seconds for reading comment and think about next try.
print ("The result is %s which is a valid matriculation number" % result)
task_4_1(result)