2012-01-22 59 views
0

我是Python新手。在這裏我寫了一個Python程序,它從地圖中檢索值。 截至目前它工作正常。退出無限循環並處理錯誤條件

當用戶輸入「M」時,它將檢索它將詢問主要否,並且它再次要求用戶輸入並且取決於用戶輸入它從字典&等中檢索值。現在

我關心的是

  1. 如何從循環退出。
  2. 如果我在要求M/N時提供無效輸入,該怎麼辦?
  3. 如果我在輸入Main或Name時給它一個無效的輸入,該怎麼辦?

任何人都可以幫助我嗎?我想知道如何實現以上3個條件。我在Java中實現了這些條件,我不知道如何在Python中完成。

streetno={"1":"Sachin Tendulkar","2":"Sehwag","3":"Dravid","4":"Dhoni","5":"Kohli"} 
streetname = dict((y,x) for x,y in streetno.items()) 
while True: 
    inp= raw_input('Enter a M/N:') 
    if inp=="M" or inp=="m": 
     key=raw_input("Enter the main number :") 
     result=streetno[key] 

    else: 
     key = raw_input("Enter the street name: ") 
     result = streetname[key] 


    print result 
+0

你是怎麼用Java來做的,你爲什麼認爲這種邏輯在Python中會有所不同? – Johnsyweb

+0

在條件2和3中,「what if」_是什麼意思?你是在問如何處理異常,或者在遇到非法輸入時python的默認行爲? – grapeot

+0

我在Java中使用了異常。是的,我在問例外情況。我想處理非法輸入 –

回答

0

1:您可以用break跳出for或while循環。

2/3:考慮這些例外。我們真的不能告訴你如何處理異常,因爲它取決於什麼想要的,但這裏有一個方法,讓你開始..

while True: 
    inp = raw_input('Enter a M/N or Q to quit:') 

    if inp.lower() == 'q': 
     break 

    if inp.lower() == "m": 
     key = raw_input("Enter the main number :") 
     try: 
      print(streetno[key]) 
     except KeyError: 
      print("You picked an invalid street number") 

    elif inp.lower() == 'n': 
     key = raw_input("Enter the street name: ") 
     try: 
      print(streetname[key]) 
     except KeyError: 
      print("You picked an invalid street name") 

    else: 
     print("{0} is an invalid choice.".format(inp)) 
0

一般來說,你將捕獲的異常有一個try/except塊。請參閱本教程,link。如果輸入不正確的主名稱或名稱,則會因爲字符串沒有匹配鍵而引發KeyError。你的Except塊會捕獲這個,你可以用'continue'重新啓動提示符。最後,要退出循環,您需要一個觸發器,例如輸入'Q'作爲elif選項退出。要退出循環,請撥打break