如何让我的程序只接受 python 2.x 中的某些输入

How do I get my program to only accept certain inputs in python 2.x

我希望这个程序只接受 "yes ,"y", "Yes" 中的任何一个作为输入文本,但出于某种原因,当我输入其中一个时没有任何反应,下面的循环似乎没有 运行:

import time

print ("Welcome to my first ever RPG! created 10/07/2016")
time.sleep(2)
begin = raw_input("Would you like to start the game?")

Start = False

if begin == ("yes" , "y" , "Yes" ):
    Start == True        

while Start == True:   
    player_name = raw_input("What would you like to name your character")
    print ("welcome " + player_name.capitalize())

(PS:首选最简单的解决方案,我是 python)

的新手

您可以使用您原来的解决方案并像这样更改它(不推荐):

if begin.strip() == "yes" or begin.strip() == "y" or begin.strip() == "Yes":

或者只检查元组中的包含:

if begin.strip() in ("yes" , "y" , "Yes" ):

甚至更好:

if begin.strip().lower().startswith('y'):

.strip() 处理用户可能输入的任何空格。

而你也想改变

Start == True

Start = True

因为前一行是相等测试而不是赋值,所以在你的情况下 Start 总是 False。

begin 是一个字符串,("yes" , "y" , "Yes" ) 是一个元组。因此,begin == ("yes" , "y" , "Yes" ) 永远不会为真。但是,元组中有三个字符串可以与 begin 进行比较。这样做的详细方法是写:

for element in ("yes" , "y" , "Yes" ):
    if element == begin:
        Start = True

Python 有一种使用 in 关键字以更少的代码行执行此操作的简便方法:

if begin in ("yes" , "y" , "Yes" ):
    Start = True

请注意,我还将 Start == True 更改为 Start = True,因为 == 仅用于比较,您可能需要使用 = 完成的赋值。

捕捉用户输入的更多变体("Yes"、"YES"、"yES"、"y"、"Y" 等):

begin = begin.strip().lower()
if begin in ("y", "yes"):
    Start = True