Python:带大写/非大写字母的键盘提示

Python:带大写/非大写字母的键盘提示,python,raw-input,Python,Raw Input,在此代码中: if raw_input("\n Enter 'y' or 'Y': ")==("y" or "Y"): print("\n Success!") 它没有正确地使用“或”,相反,如果在本例中输入了非资本“y”,则条件满足。如果我进入首都“Y”,我就不会成功 这里怎么了?试试这个 如果是原始输入(“\n输入'y'或'y':”)。lower()=“y”:尝试列出值,并在关键字中使用。像这样的东西会有用的 if raw_input("\n Enter 'y' or

在此代码中:

    if raw_input("\n Enter 'y' or 'Y': ")==("y" or "Y"):
       print("\n Success!")
它没有正确地使用“或”,相反,如果在本例中输入了非资本“y”,则条件满足。如果我进入首都“Y”,我就不会成功

这里怎么了?

试试这个
如果是原始输入(“\n输入'y'或'y':”)。lower()=“y”:

尝试列出值,并在关键字中使用
。像这样的东西会有用的

if raw_input("\n Enter 'y' or 'Y': ") in ('y', 'Y'):
   print("\n Success!")
if raw_input("\n Enter 'y' or 'Y': ") in "yY":
   print("\n Success!")
关键字中的
根据字符串元组测试字符串,并在正确匹配时返回
True

因为这里只有一个字符,所以可以构建一个字符串
“yY”
。像这样的东西会有用的

if raw_input("\n Enter 'y' or 'Y': ") in ('y', 'Y'):
   print("\n Success!")
if raw_input("\n Enter 'y' or 'Y': ") in "yY":
   print("\n Success!")
这里,字符串的每个字符的作用类似于上面元组的一个元素


代码中出现错误:
您使用了
(“y”或“y”)
。这在Python中不起作用。这将只返回
“y”
,因为
“y”
“y”
都被视为
真值。但是,如果键入
(0或“Y”)
,您将得到
“Y”
,因为
0
被视为
假值

if语句的右侧是错误的,我认为您需要更好地理解
运算符在字符串之间的行为

请记住,
的返回值是最后计算的值,Python将空字符串计算为布尔值
False
,将非空字符串计算为布尔值
True

在您的例子中,解释器读取
(“y”或“y”)
,然后计算“y”的布尔值,该值为
True
,因为它是一个非空字符串。因此,
语句的布尔值将使其
为真
,语句的返回值变为“y”,即最后计算的值

这就是我写这段代码的方式。我会在
\u input
中保留
原始输入的返回值,这将使我和其他人更容易阅读和理解if语句:

_input = raw_input("\n Enter 'y' or 'Y': ")

if input in ["y", "Y"]:
    print("\n Success!")
这里怎么了

在许多编程语言中,
是布尔运算符。将其应用于TRUE或FALSE的值。如果至少有一个操作数为TRUE,则该操作的计算结果为TRUE:

TRUE OR TRUE == TRUE
TRUE OR FALSE == TRUE
FALSE OR TRUE == TRUE
FALSE OR FALSE == FALSE
:

如果转换为布尔值的
x
True
,则返回
x
;否则它将返回
y
。对于布尔操作数,这会产生与上述相同的结果,但对于非布尔操作数,这会产生有趣的效果:

  • []或{}
    {}
    (因为空列表在强制转换为
    布尔值
  • [1]或{}
    [1]
    (因为当强制转换为
    布尔值时,非空列表是
    True
  • [1]或1/0
    也是
    [1]
    (当左操作数为
    True
    时,甚至不会计算右操作数,因此我们不会遇到
    零分区错误
    。这称为。)
因此,除了在自然语言中,Python
不能解释为分隔可选值。(仅可选条件/布尔表达式)

关于如何使代码按预期运行,有几种可能性:

天真的方法:

answer = raw_input("\n Enter 'y' or 'Y': ")
if answer == "y" or answer == "Y":
   print("\n Success!")
规范化输入:

if raw_input("\n Enter 'y' or 'Y': ").lower() == 'y':
   print("\n Success!")
中具有成员资格运算符的一组备选值进行比较:

if raw_input("\n Enter 'y' or 'Y': ") in {'y', 'Y'}:
   print("\n Success!")

通过在Python提示符中键入以下内容,尝试理解Python解释器如何理解语句的左侧:
print(“y”或“y”)
我是说右侧:)@Creatronik,这些答案对您有帮助吗?