【发布时间】:2018-07-14 08:35:54
【问题描述】:
定义性别():
创建一个应该返回 True 或 False 的函数
gener = input('Choose \"1\" for Male or \"2\" for Female: ')
“gener”应该接收“1”或“2”作为字符串
if gener == '1':
print('You selected Male')
return True
elif gener == '2':
print('You selected Female')
return False
else:
这就是问题所在。它应该再次执行函数gender(),以便用户可以正确地重新插入“1”或“2”
print('Invalid character')
gender()
但是在打印函数gender()时,即使再次执行gender()以接收新值,它也会返回“None”,继续Else语句的值
print(gender())
【问题讨论】:
-
递归调用函数通常是个坏主意,除非你真的有一些递归算法。对于您的问题,请查看Asking the user for input until they give a valid response 以获取建议。
-
@ThierryLathuille 这是一篇非常好的帖子。
-
from itertools import repeat, dropwhile; gender = next(dropwhile(lambda x: x not in ('1', '2'), (input() for _ in repeat(None)))) -
问题中存在重现错误所需的所有代码。这个问题并不完全是关于“如何在有效之前要求输入?”而是关于为什么这个代码
returns None- 请参阅答案以了解原因。
标签: python python-3.x function if-statement boolean