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

时间:2016-07-10 20:42:36

标签: python-2.7

import math
import random
import time

Start = False


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

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())

这就是我现在所拥有的,我希望程序只接受输入的文本“是”,“是”,“是”但是出于某种原因,当我输入其中一个没有任何反应时,下面的循环没有似乎要运行

我将非常感谢任何帮助! P.S我是python的新手,所以最简单的解决方案将非常受欢迎

2 个答案:

答案 0 :(得分:1)

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"," y",&# 34; Y"等等:

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

答案 1 :(得分:0)

您可以使用原始解决方案,只需更改(不推荐):

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总是为假。