在if语句中使用input()是一种不好的做法吗?

时间:2014-11-15 00:33:39

标签: python if-statement python-3.x input

我只是好奇做这样的事情是不是坏事:

if input("Continue? Enter yes or no: ").lower() == "yes":
    # Continue code
else:
    # Else code

我有点喜欢这样,因为你不需要创建一个全新的变量,但这是不是因为任何原因而不受欢迎?如果在这个例子中还不错,还有其他情况会不好吗?我还没有看到任何这方面的例子,所以我不确定。

3 个答案:

答案 0 :(得分:2)

嗯,问题是,为什么创建一个新名称是一个问题,如果它会使事情更清晰,更容易维护?如果您将来需要进行更复杂的验证,该怎么办?如果你需要在用户输入上做更多工作而不仅仅是降低它呢?

当然,您的代码没有任何问题,但只有当用户键入yes或no时它才有效。但是,如果用户键入一些无效数据会发生什么?然后,您需要一些名称来绑定到您的用户输入:

while True:
    user_input = input("Type yes or no: ").lower()
    if user_input == 'yes':
        # Do something
    elif user_input == 'no':
        # Don't do something
    else:
        continue

否则,你会与“' no'在elif声明中?在您的示例中,如果用户输入" Hell yes,我想垃圾邮件和垃圾邮件!"他不会吃早餐。

你的问题可能引发很多观点,这些都是地雷。但是检查一下这里会出现什么,因为当然,它可以帮助你在Python中创建更好的代码。

答案 1 :(得分:1)

是的,这是一种不好的做法。保存变量确实不能为您节省任何费用。变量是帮助您完成工作的工具。不要避免让你的工作更轻松的事情。

使用变量的最大好处之一是它可以更容易地使用调试器,因为您可以在输入语句和条件之间设置断点。它还使代码更容易测试,因为你可以暂时用其他东西替换输入语句,而不会在逻辑中引入错误。

答案 2 :(得分:1)

我认为编写这样的代码不是一个好主意,因为如果你想添加一些关于用户输入的其他信息:

if input("Continue? Enter yes or no: ").lower().strip().replace("[","").replace("]","") == "yes":

您的代码太长而且不易阅读。