特定while循环的效率

时间:2015-07-08 19:19:00

标签: python loops python-3.x 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")

1 个答案:

答案 0 :(得分:2)

就原始机器效率而言,您的算法是完全可以接受的。瓶颈是用户的输入。每次输入只进行一次循环,因此该代码的实际执行基本上是即时的。有些程序会使用循环来连续检查某些条件,就像计算机可以管理的那样快,这确实不是最理想的(占用CPU核心)。

在良好的编码风格方面,您的算法也是完全可以接受的。在有效输入上使用while True(或while 1return非常常见且易于理解。

我建议稍微修改一下if choice.lower().strip() in ('a', 'b'):而不是if choice == "a" or choice == "b":,如评论中所述,但这只是为了在面对凌乱的用户输入时使其更加健壮。此外,您不需要转义引号,除非它们是包含字符串的类型,因此您可以input("choose 'a' or 'b':")代替input("choose \'a\' or '\b\':")