在同一个 if 语句中比较字符串和整数

Compare string and integer in same if statement

我有一个接受用户输入的程序。如果输入是字符串或不是 1 到 4 之间的数字,我想显示无效选项消息。我想在一个 if 语句中检查所有这 3 个条件。

ask_option = input("Your option: ")

if int(ask_option) != int and (int(ask_option) < 1 or int(ask_option) > 4):
    print("Not a valid option")

我觉得 int(ask_option) != int 不正确。但是是否可以在一个 if 语句中满足所有这 3 个条件?

我的代码满足在 1-4 之间进行选择的标准,但无法检查字符串输入。请帮忙

如果您尝试将字符串输入转换为 int,程序将抛出 ValueError。

ask_option = input("Your option: ")

try:
   val = int(ask_option)
   if val <= 1 or val => 4:
    print("Not a valid option!")
except ValueError:
   print("Not a valid option!")

input() 将始终 return 一个字符串,除非您明确转换它。因此,使用 ask_option = int(input("Your option: ")) 已经可以满足检查 ask_option 是否为整数,否则将引发异常。

至于评估整数,您可以在一行中完成此操作,例如:

if not 1 <= ask_option <= 4:
   print("Not a valid option")
ask_option = input("Your option: ")
if len(ask_option) != 1 or ask_option < '1' or ask_option > '4':
    print("Not a valid option")
else:
    print( "valid option")

编辑:

OP:“如果输入是字符串或不是 1 到 4 之间的数字,我想显示无效的选项消息。”

因此我们需要接受 1 - 4

范围内的值

我们知道 input() 接受所有字符串

所以在if语句中

第一个条件:len(ask_option) != 1

我们使长度为 not equal1 的任何字符串无效(因为我们需要接受范围从 1-4length 1 的值)

现在我们要处理长度仅为 1input 值,它可以是任何值,将在接下来的 2 个条件下进行检查。

第二个和第三个条件:ask_option < '1' or ask_option > '4'

我们进行 string 比较(使用它们的 ASCII 值完成)

更多关于 string 比较:String comparison technique used by Python

我不推荐使用这种方法,因为乍一看很难说出它的作用,所以最好使用 try except 而不是其他答案中的建议。

将此解决方案视为解决 OP 问题的另一种方法(但不建议实施。)