首页 > 解决方案 > 如何防止用户按回车键?

问题描述

我想防止用户输入除 + 、 - 、 / 、 * 以外的输入,并且我编写的代码工作正常,它可以防止用户输入数字、字符串、空格,但是当用户按下 ENTER KEY 程序跳过输入问题并转到下一个代码块。

如何防止用户按 ENTER KEY 并跳过“输入运算符:”输入问题?

op_error = True
while op_error:
    op_error = False
    op = input("Enter an Operator: ")
    if op in "+-/*":
        break
    elif len(op.strip()) == 0:
        op_error = True
    else:
        op_error = True

标签: python

解决方案


您遇到的问题与测试有关

if op in "+-/*":

以下列表中的任何字符串都将通过,而不仅仅是空字符串:

'', '+', '-', '/', '*', '+-', '-/', '/*', '+-/', '-/*', '+-/*'

问题是在确定字符串是否为有效运算符之前,您没有检查字符串的长度是否为 1。如果您只想使用in运算符,您可以执行以下操作:

if op in ('+', '-', '/', '*'):

请注意,''and'+-'永远不会等于该元组的元素。另一种方法是显式检查长度:

if len(op) == 1 and op in '+-/*':

顺便说一句,在这种情况下不需要op_error变量。它没有任何逻辑目的。以下是如何以更简单的方式重写代码:

while True:
    op = input("Enter an Operator: ")
    if op in ('+', '-', '/', '*'):
        break

元组方法的优点是它允许您使用多字符运算符(例如 python's **)。它还将更容易过渡到使用字典,其键是运算符,其值是,例如,处理钩子。


推荐阅读