2016-07-10 10 views
1
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()) 

私は現時点でここにいるのですが、入力したテキストを「はい」「y」「はい」何らかの理由で何かが入力されても何も起こらず、以下のループが実行されないようです私のプログラムがpythonの特定の入力のみを受け入れるようにするにはどうすればいいですか?2.7.1

私は一番助けに感謝します。

答えて

0

あなたはオリジナルのソリューションを使い、それほど変更しないでください(推奨しません):

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

それともタプルに封じ込めのためのチェック:ユーザーが入力した可能性のあるすべての空白と.strip()取引

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

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

あるいはさらに良いです。

と旧ラインではなく割り当てより平等のテストですので、あなたのケースでStartは常にfalseですので、あなたも

Start = True 

Start == True 

を変更したいです。

+0

を、私はオプションと一緒に行きました3つは完全に動作します –

+0

'begin.strip()。lower()。startswith( 'y'):'は "y"で始まる単語に一致します... – jDo

+0

@jDo Yup、考えたこともあります。 – ifma

1

beginは文字列であり、("yes" , "y" , "Yes")はタプルです。したがって、begin == ("yes" , "y" , "Yes")は決して真ではありません。しかし、タプルには、beginと比較できる3つの文字列があります。私もStart == Trueを変更

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

注:

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

Pythonはinキーワードを使用して少ないコード行でこの操作を行うための便利な方法があります。それを行うための詳細な方法は、書くことだろうStart = Trueから==までは比較のためだけです。ここでは=を使用して割り当てをしたいと考えています。

ユーザー入力( "はい"、 "YES"、 "はい"、 "Y"、 "Y"、など)の多くのバリエーションキャッチする:感謝の男

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

ありがとうございます! "=="と "="についての有用な情報 –

関連する問題