我正在为学校项目制作一个程序,并且在程序内,用户做出决定。确保用户输入有效输入。我想知道使用像这样的while循环是否有效。它包含在一个可以多次使用的函数中。我做了这个,因为这个函数将被调用,返回的值将存储在一个变量中。这是一个命令行程序:
def user_choice():
while True:
choice = input("choose \'a\' or '\b\':")
if choice == "a" or choice == "b":
return choice
else:
print("not a valid input")
答案 0 :(得分:2)
就原始机器效率而言,您的算法是完全可以接受的。瓶颈是用户的输入。每次输入只进行一次循环,因此该代码的实际执行基本上是即时的。有些程序会使用循环来连续检查某些条件,就像计算机可以管理的那样快,这确实不是最理想的(占用CPU核心)。
在良好的编码风格方面,您的算法也是完全可以接受的。在有效输入上使用while True
(或while 1
)return
非常常见且易于理解。
我建议稍微修改一下if choice.lower().strip() in ('a', 'b'):
而不是if choice == "a" or choice == "b":
,如评论中所述,但这只是为了在面对凌乱的用户输入时使其更加健壮。此外,您不需要转义引号,除非它们是包含字符串的类型,因此您可以input("choose 'a' or 'b':")
代替input("choose \'a\' or '\b\':")
。