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,这些答案对您有帮助吗?