2013-04-01 159 views
0
direction = input("enter a direction: ") 
if direction != "quit" and direction != "go north" and direction != "go south" and direction != "go east" and direction != "go west" and direction != "go up" and direction != "go down" and direction != "look": 
    print ("please enter in the following format, go (north,east,south,west,up,down)") 

elif direction == "quit": 
    print ("OK ... but a small part of you may never leave until you have personally saved Muirfieland from the clutches of evil .. Bwahahahahahah (sinister laugh) ... the game should then end.") 

elif direction == "look": 
    print ("You see nothing but endless void stretching off in all directions ...") 

else: 
    print ("You wander of in the direction of " + direction) 

我需要知道如何在python中做到這一點。 我需要掃描第一用戶輸入兩個字母 例如掃描用戶輸入python

i = user_input 
#user inputs go ayisgfdygasdf 

我需要它能夠掃描用戶輸入,檢查前2個字母去,如果他們都去,但它不承認在這種情況下是「ayisgfdygasdf」,然後打印「第二個單詞,然後打印」對不起,我不能這樣做「

+0

不是真的,如果程序識別出第一個單詞是「去」,但不承認第二個單詞,然後python打印「對不起,我不能這樣做」 – user2232076

回答

0

您可以通過索引使用[]符號訪問python中的字符串的字符。您可以通過鍵入user_input [:2]來檢查字符串中的前兩個字符。此代碼將包含所有字符,但不包括索引類型。所以這個符號將包括user_input [0]和user_input [1]。然後,您可以檢查user_input [:2]是否等於'go',然後從那裏繼續。

希望這有助於。

+0

謝謝你的幫助! – user2232076

+0

我得到了這個工作,但我得到了另一個問題,如果你看我的代碼 例如,如果用戶輸入是「去北方」 它會打印「你想知道去北方」 我想刪除從用戶輸入「去」,我將如何做到這一點? – user2232076

+0

使用這個方向[3:]進行打印,這將使用從第三個字符開始的子陣列。 –

0

而是嘗試使用:

direction = sys.stdin.readlines() 

這可能需要你按ctrl + d在完成後,但你將能夠捕捉到更多東西。

此外,爲了讓子陣,你可以,那麼你甚至可以檢查:

direction[:2] != "go" 

或替代,更多可讀的代碼:

if not direction.startswith("go"): 

而且我建議,爲使您的代碼更易讀,

defined_direction = frozenset(["quit", "go north", "go south"]) 
if(direction not in defined_direction): 
    print "please enter...." 
+0

會做,謝謝你的建議 – user2232076

+0

沒有概率,我剛剛回答了另一個評論,你仍然有一個關於使用「去」最後一項的問題。讓我知道這個答案是否清楚。 :) –

+0

什麼'sys.stdin.readlines()'讓你的'sys.stdin'不?或者,就此而言,在循環中調用'input'?除了它要求您在完成之後點擊^ D的缺點,或者在Windows上^ Z,並且它可能不適用於某些IDE,等等。 – abarnert

1

他還可以嘗試使用:

directions.split() 

但它可能需要使用try /除了在某些情況下。

有關拆分的詳細信息和方法,嘗試使用:

dir(directions) 

,看看有什麼方法對象的方向有

或:

help(directions.split) 

看到有關的特定方法幫助(在這種情況下方法拆分物體方向)

+1

'.split()'本身將始終工作,只要'directions'實際上是一個字符串;無需在那裏捕捉異常。但是,你需要擔心結果中有多少項目:) –

0

你可以inde X您輸入的單個字符:

if direction[:2] == "go": 
    print "Sorry, I can't do that." 

然而,試圖分配的if-else分支,每個輸入通常是一個不錯的選擇......變得難以非常迅速地維護。

在這種情況下,一個更簡潔的方法可能會定義與有效輸入字典如下:

input_response = {"quit":"OK ... but", "go north": "You wander off north", \ 
        "go south": "You wander off south"} # etc 

然後,您可以您的代碼重新寫的東西,如:

try: 
    print input_response[direction] 
except KeyError: 
    if direction[:2] == "go": 
     print "Sorry, I can't do that." 
    else: 
     print ("please enter in the following format...")