Python 如何检查用户输入是否为小写或大写,但仍然打印出答案

Python 如何检查用户输入是否为小写或大写,但仍然打印出答案,python,input,capitalization,Python,Input,Capitalization,我真的刚刚开始用python编程,我有一个小程序,可以响应特定的用户输入。我希望这样,当您键入大写的内容时,它在代码中是否大写并不重要。这是我到目前为止写的代码 我不能添加图像,因为我没有足够的代表,但我想我可以解释它 这就是我目前掌握的代码 循环并响应特定的用户输入 import random BOO = ("Aghh!", "That wasn't just a fart!", "Oh, I was soo scared", "I am so terrified right n

我真的刚刚开始用python编程,我有一个小程序,可以响应特定的用户输入。我希望这样,当您键入大写的内容时,它在代码中是否大写并不重要。这是我到目前为止写的代码

我不能添加图像,因为我没有足够的代表,但我想我可以解释它

这就是我目前掌握的代码

循环并响应特定的用户输入

import random

BOO = ("Aghh!", "That wasn't just a fart!", "Oh, I was soo scared", "I am so terrified       right now", "Where did you spring from?!", "If this was any more scary it would be R  rated!")

x = ""
print "I am a simple computer program designed to respond to certain inputs from a user"

x = raw_input("Input: ")
while not(x == "exit" or x == "Exit"):

    if x == "Oli" or x== "oli" or x == 'Oliver' or x == 'oliver':
        print "Its the creator!"

    elif x == "hi" or x == "hello" or x == "Hi" or x == "Hello":
        print "Hi!"

    elif x == "how are you?" or x == "how are you":
        print "Fine thanks!"


    elif x == "boo!" or x == "boo" or x == "BOO!" or x == "Boo":
        print random.choice(BOO)

    elif x == "You are actually awesome":
        print "Aww, Thanks!"

    else:
        print "Hello, " + x
    x = raw_input("Input: ")
例如:在用户输入单词“boo”的第21行,我不得不为世界的不同大小写添加or语句。是否有一种方法可以让代码检查大小写,并且仍然打印相同的输出(或随机输出)
我已经检查了stackoverflow,但我找不到问题的答案。谢谢。

如果我理解正确,您希望用户输入的内容大写 或者分别使用小写字母,这样您就不必每次都检查大写字母

因此,在从用户处获取输入后,您可以使用上功能或下功能:

userInput = raw_input("Insert text").upper()

如果您只想测试输入是大写还是小写,则可以导入字符串模块并使用string.ascii_小写或string.ascii_大写

import string

userInput = raw_input("Insert text")

print userInput in string.ascii_lowercase
print userInput in string.ascii_uppercase
希望有帮助:) 亚历克斯

编辑:没错,所以我相信我现在就得到了!您的问题是,例如,对于输入BOO,您不确定用户是否会键入BOO或BOO或BOO,因此您必须检查用户输入的所有可能的资本化。这基本上就是我在之前的文章中试图解释的

您所能做的就是像这样获取用户的输入:

userInput = raw_input("Insert Text").lower()
现在,无论用户以何种大写形式输入BOO(BOO,BOO,BOO,BOO等),变量userInput在所有这些情况下都将包含
BOO
,因为我们总是将用户的输入小写。因此,不必检查用户的输入是否为boo或boo或boo,只需检查它是否等于
boo
即可继续

如果你想接受感叹号,那么你也需要添加另一个检查


希望有帮助

你为什么要发布一张图片呢?发布代码!看看你的程序是用大写还是小写,然后将所有用户输入转换为你决定的内容。以防万一,
x in['hi',hello']
看起来好多了。当然还有
.lower()。我只是在问题中添加了我的代码,我有点理解你想说什么,但我需要更多的解释更多的解释-好吧,如果你分两步来做,也许会更容易掌握:(1)
user\u input=raw\u input(“input:”)
(2)
input\u lower=user\u input.lower()
然后您可以将
input\u lower
与测试字符串的小写版本进行比较。您不再需要关心用户使用的外壳。对于小写输入,甚至不需要新变量:
user\u input=user\u input.lower()
。或者,正如Alex所建议的,您可以获取用户输入,同时也可以将其小写:
user\u input=raw\u input(“input:”).lower()
。可能方法的链接让您感到困惑。您可以对字符串调用
.lower()
,对吗?例如,
greeting=“HI”
然后
greeting.lower()
返回
HI
(不修改
问候语本身)。(你甚至不需要一个变量:
'HI'。lower()
也会返回
HI
,尽管用字符串文字这样做很少有用。)总之,
raw\u input(“input:”)
会返回一个字符串,对吗?因此,您可以对该返回值调用
.lower()
,而无需先将其放入变量中。然后,这个方法调用链的返回值就是链中最后一个调用返回的字符串。是的,现在我理解了Edward,谢谢!这将极大地帮助我编写代码。我只是不明白.lower()在做什么。这不是必需的,但有一点很挑剔:在这种情况下,最好使用.casefold而不是.lower。
userInput = raw_input("Insert Text").lower()