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的新手,所以最简单的解决方案将非常受欢迎
答案 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
总是为假。