特定while循环的效率
The efficiency of a specific while loop
我正在为一个学校项目制作程序,在程序中,用户做出决定。以确保用户输入有效输入。我想知道这样使用 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")
就原始机器效率而言,您的算法是完全可以接受的。瓶颈是用户的输入。每个输入它只经过一次循环,所以该代码的实际执行基本上是瞬时的。一些程序会使用循环以计算机可以管理的最快速度连续检查某些条件,这确实是次优的(吃掉 CPU 核心)。
就良好的编码风格而言,您的算法也完全可以接受。在有效输入上使用带有 return
的 while True
(或 while 1
)非常普遍,任何 reader.
都可以轻松理解
我建议进行一些细微的修改,例如 if choice.lower().strip() in ('a', 'b'):
而不是评论中提到的 if choice == "a" or choice == "b":
,但这只是为了让它在面对混乱的用户输入时更加健壮。此外,您不需要转义引号,除非它们是包含字符串的类型,因此您可以执行 input("choose 'a' or 'b':")
而不是 input("choose \'a\' or '\b\':")
.
我正在为一个学校项目制作程序,在程序中,用户做出决定。以确保用户输入有效输入。我想知道这样使用 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")
就原始机器效率而言,您的算法是完全可以接受的。瓶颈是用户的输入。每个输入它只经过一次循环,所以该代码的实际执行基本上是瞬时的。一些程序会使用循环以计算机可以管理的最快速度连续检查某些条件,这确实是次优的(吃掉 CPU 核心)。
就良好的编码风格而言,您的算法也完全可以接受。在有效输入上使用带有 return
的 while True
(或 while 1
)非常普遍,任何 reader.
我建议进行一些细微的修改,例如 if choice.lower().strip() in ('a', 'b'):
而不是评论中提到的 if choice == "a" or choice == "b":
,但这只是为了让它在面对混乱的用户输入时更加健壮。此外,您不需要转义引号,除非它们是包含字符串的类型,因此您可以执行 input("choose 'a' or 'b':")
而不是 input("choose \'a\' or '\b\':")
.