Python 我能';如果while条件为True,则似乎无法使此函数自身重复
我的代码应该接受用户输入的“n”值,该值必须是正整数,如果它不是正整数,或者如果它是字符串而不是整数,则应该重复输入过程。这是我的密码:Python 我能';如果while条件为True,则似乎无法使此函数自身重复,python,python-3.x,Python,Python 3.x,我的代码应该接受用户输入的“n”值,该值必须是正整数,如果它不是正整数,或者如果它是字符串而不是整数,则应该重复输入过程。这是我的密码: def input_n(): """obtains n value from user""" while True: print("Input number of terms n (must be > 0):") n = input("> ") if not n.isdigit():
def input_n():
"""obtains n value from user"""
while True:
print("Input number of terms n (must be > 0):")
n = input("> ")
if not n.isdigit():
print("Not a usuable n value")
return None
continue
else:
n = int(n)
if n < 1:
print("Not a usuable n value")
return None
else:
return n
def input_n():
“”“从用户处获取n个值”“”
尽管如此:
打印(“输入术语数量n(必须大于0):”)
n=输入(“>”)
如果不是,则n.isdigit():
打印(“非可使用的n值”)
一无所获
持续
其他:
n=int(n)
如果n<1:
打印(“非可使用的n值”)
一无所获
其他:
返回n
我尝试过在第一个if循环结束时使用continue语句和不使用continue语句。如果输入负数或字符串,它似乎永远不会重复。它将转到代码的下一部分(未显示或不需要)。既然while循环保持为真,有人知道它为什么不重复吗?如果n不是数字,则返回该函数。如果n不是数字,则返回该函数。如果n不是数字,则返回该函数。语句结束该函数。 因此,当您执行
return None
时,它不能在循环中重复自己,因为它已经退出了循环。
您可能希望使用
continue
而不是returnnone
语句来结束函数。
def input_n():
"""obtains n value from user"""
print("Input number of terms n (must be > 0):")
while True:
n = input("> ")
if not n.isdigit():
print("Not a usable value - must be a number!")
continue
n = int(n)
if n < 1:
print("Not a usable value - too low!")
continue
return n
因此,当您执行return None
时,它不能在循环中重复自己,因为它已经退出了循环。
您可能希望使用continue
而不是return None
def input\u n()
def input_n():
"""obtains n value from user"""
print("Input number of terms n (must be > 0):")
while True:
n = input("> ")
if not n.isdigit():
print("Not a usable value - must be a number!")
continue
n = int(n)
if n < 1:
print("Not a usable value - too low!")
continue
return n
“”“从用户处获取n个值”“”
打印(“输入术语数量n(必须大于0):”)
尽管如此:
n=输入(“>”)
如果不是,则n.isdigit():
打印(“不是可用值-必须是数字!”)
持续
n=int(n)
如果n<1:
打印(“不是可用值-太低!”)
持续
返回n
def input\u n()
“”“从用户处获取n个值”“”
打印(“输入术语数量n(必须大于0):”)
尽管如此:
n=输入(“>”)
如果不是,则n.isdigit():
打印(“不是可用值-必须是数字!”)
持续
n=int(n)
如果n<1:
打印(“不是可用值-太低!”)
持续
返回n
试试这个
def input_n():
print("Input number of terms n (must be > 0):")
while True:
n = raw_input("> ")
if not n.isdigit() or n < 1:
print("Not a usuable n value")
continue
else:
return n
def input_n():
打印(“输入术语数量n(必须大于0):”)
尽管如此:
n=原始输入(“>”)
如果不是n.isdigit()或n<1:
打印(“非可使用的n值”)
持续
其他:
返回n
试试这个
def input_n():
print("Input number of terms n (must be > 0):")
while True:
n = raw_input("> ")
if not n.isdigit() or n < 1:
print("Not a usuable n value")
continue
else:
return n
def input_n():
打印(“输入术语数量n(必须大于0):”)
尽管如此:
n=原始输入(“>”)
如果不是n.isdigit()或n<1:
打印(“非可使用的n值”)
持续
其他:
返回n
当您执行返回None
时,它已经返回到调用函数。您需要将其删除,如果代码中的引导您,则始终会有返回。另外,contiue
不能执行,因为前面有一个返回值
。@kart谢谢!它成功了:)我现在明白了,因为条件为真,我不需要返回None,因为它将启动while循环!当您执行返回None
时,它已经返回到调用函数。您需要将其删除,如果代码中的引导您,则始终会有返回。另外,contiue
不能执行,因为前面有一个返回值
。@kart谢谢!它成功了:)我现在明白了,因为条件为真,我不需要返回None,因为它将启动while循环!