2014-06-10 131 views
-2

所以。我有代碼需要用戶輸入並處理它。它需要名字和名字肖恩是他們的名字,它問他們是哪個肖恩。我希望這樣做,因爲既沒有列出肖恩,也會說'我不知道肖恩',但它的馬車並不起作用。任何幫助?代碼如下:基於輸入關鍵字的輸出

name = raw_input ("What's your name?") 

if Sean in name:  
    name1 = raw_input("Downey or Paul?")  
else:  
    print ('Hi %s') % (name)  
if Downey in name1:  
    print ("Hi Sean Downey")  
if Paul in name1:  
    print ("Hi Sean Paul")  
else:  
    print ("I don't know that Sean") 

回答

3

下面是一些小的改動你的代碼的工作版本,我將在下面

name = raw_input ("What's your name?") 

if 'Sean' in name:  
    name1 = raw_input("Downey or Paul?")   
    if 'Downey' in name1:  
     print ("Hi Sean Downey") 
     x = raw_input("Did you know that the name is irish?") 
     if x == 'yea': 
      print ('oh cool') 
    elif 'Paul' in name1:  
     print ("Hi Sean Paul")  
    else:  
     print ("I don't know that Sean") 
else:  
    print ('Hi %s') % (name) 

首先,如前所述user2612566,你是混亂的變量與解釋字符串文字。要檢查用戶是否輸入Sean作爲名稱,應該檢查if 'Sean' in name:,因爲輸入被轉換爲字符串。

其次,你的代碼被勒令這樣即使肖恩name不是,它會打印I don't know that Sean因爲你的代碼底部的else塊的,我改變了由第二和第三if塊移動至第一if塊。

第三,你checke if Downey in name1:name1只有當你的代碼進入第一,如果存在,因此,如果不第一,如果進入,你的代碼將失敗,因爲它無法找到變量name1。這也是固定移動這些if S插入第一if

+0

我該如何做到這一點,如果用戶說唐尼,它會問他們是否知道這個名字是愛爾蘭人,如果他們說是的,它會說'哦很酷' – ImSeanDowney

+0

@ user3727382看到編輯,我插入了一些行。一個新的raw_input存儲答案在'x'和一個新的'if',檢查輸入並打印'哦,很酷',如果輸入是'是' –

+0

它不打印哦酷 – ImSeanDowney

2

您正在混淆字符串文字與變量名稱。看來你想測試是否'Sean' in name1而不是Sean in name1

而且,你的第三個「如果」的說法應該是一個elif的 - 見here

你IFS還沒有正確嵌套你想要的結果。

固定碼:

name = raw_input ("What's your name?") 

if 'Sean' in name:  
    name1 = raw_input("Downey or Paul?") 
    if 'Downey' in name1:  
     print ("Hi Sean Downey")  
    elif 'Paul' in name1:  
     print ("Hi Sean Paul")  
    else:  
     print ("I don't know that Sean") 
else:  
    print ('Hi %s') % (name)  
+0

我如何讓這個如果輸入既不知道姓,是說「我不知道,肖恩」 – ImSeanDowney

+0

請對'如果唐尼相應的變化在name1'和'如果保羅在name1中(以及如果改爲elif),它應該按照你想要的方式工作。 –

+0

它的作品,但如果我輸入一個不是肖恩的名字它說/嗨(姓名)/嗨肖恩保羅 – ImSeanDowney