2013-05-11 61 views
0

我在2.7有一個工作貨幣轉換器,但我想確保程序不會獲取它無法處理的用戶輸入的數據。如何使用break語句

  1. 如何獲取用戶輸入要理解不相關的情況下
  2. 如何讓程序重新啓動,如果用戶輸入錯誤的;即如果中斷,但我不知道如何做到這一點,儘管四處搜索並測試了一些方法。

我已經留下了其餘的代碼,因爲它是微不足道的,有效地使用預設數字複製第一組乘法。

currency = str(raw_input ("""what currency would you like to covert: GBP, EURO, USD OR YEN? 
""")) 
exchange = str(raw_input("""what currency would you like in exchange? : GBP, EURO, USD OR YEN? 
           """)) 
amount = int(input("""how much would you like to convert? 
         """)) 
decision = str(raw_input("""Please enter u for user input exchange rate or s for the preset exchange rate 
""")) 

if decision == "u" : 
    user_rate = raw_input("Please enter the current exchange rate") 
    exchange_value = int(amount) * int(user_rate) 
    print ("At the user found exchange rate you will receive",exchange_value,exchange) 

elif decision == "s" : 
    if currency == "GBP" and exchange == "USD": 
     exchange_value= int(amount) * 1.6048 
     print ("At the preset exchange rate you will receive",exchange_value,exchange) 

    if currency == "GBP" and exchange == "EUR": 
     exchange_value= int(amount) * 1.2399 
     print ("At the preset exchange rate you will receive",exchange_value,exchange) 
+2

有沒有循環。你不能從非循環中突破。 – Makoto 2013-05-11 16:21:48

+0

無關:'str(raw_input(...))'是多餘的,因爲'raw_input'返回一個字符串。 'int(input())'應該是'int(raw_input())'。 – bereal 2013-05-11 17:31:00

回答

0

像這樣的事情會幫助你上手

valid_input = ('EUR', 'GBP', 'USD', 'JPY') 

    while True: 
     # Obtain user data 

     # Make sure all its in caps 
     currency = currency.upper() 
     exchange = exchange.upper() 

     if currency in valid_input and exchange in valid_input: 
      break 

     print ("Error Invalid input, try again...") 

    # Proccess data... 
2

1)您可以使用相同的情況下,無論

if currency.lower() == 'gbp'

if currency.upper() == 'GBP'

2)你可以在一段時間運行您的程序比較用戶輸入的字符串循環,這樣,如果條件不滿足,你可以continue到循環的下一個迭代(wh ICH將從頭開始重新啓動程序)

while True: 
    # get user input 
    # validate user input 
    # if input not valid continue, which will "restart" your program 
+0

感謝關於第二部分的答案是否有一個函數可以說沒有錯誤?所以例如true = errors:重啓程序 – userwill 2013-05-11 17:00:54