2016-05-04 59 views
0

我與一個算術測驗有關的程序有問題。當我輸入一個名稱時,測驗應該打印歡迎消息,但是如果我輸入一個空格或數字,那麼程序應該循環的問題,但告訴用戶,他們犯了一個錯誤。我使用了try語句和NameError語句來嘗試解決這個問題,但是當我使用函數「except」並在閒置時運行它時,它說我有一個無效的語法。除名稱的錯誤

這裏是我試圖修復代碼:我已編輯的程序代碼

import random 
while True: 
    try: 
     UserName = input("What is your name:") 
     except NameError: 
      print ("The answer given does not compute!! Try again") 
      continue 
     else: 
      break 

     print(UserName," welcome to the Arithmetic Quiz.") 

,但仍當我嘗試在空閒它強調,除了運行它,然後說無效的語法。

+3

你除了是錯誤的縮進級別 – Natecat

+0

您可以添加錯誤消息?它看起來像'除了NameError:'沒有正確對齊,至少在你的例子中,它應該與它對應的try:語句對齊。 –

+0

@Natecat我將縮進移到了正確的位置,但仍然出現錯誤。謝謝 – super123

回答

1

這是正確的縮進應該是什麼樣的try: except: else:

import random 
while True: 
    try: 
     UserName = input("What is your name:") 
    except NameError: 
     print("The answer given does not compute!! Try again") 
     continue 
    else: 
     break 
print(UserName," welcome to the Arithmetic Quiz.") 

警告(感謝cricket_007)這個循環將永遠不會結束。我的意思是說明如何對OP進行縮進。

+1

這是正確的縮進,但循環永不退出 –

+0

@ cricket_007我的意思是它只顯示OP的縮進應該是什麼樣子。我想我應該詳細闡述一下:-)謝謝! –

2

你並不需要一個try-except檢查空字符串

while True: 
    UserName = input("What is your name:") 
    if not UserName: 
     print("The answer given does not compute!! Try again") 
     continue 
    else: 
     break 
print(UserName," welcome to the Arithmetic Quiz.") 
+0

有沒有辦法讓它這樣,如果有一個空白的錯誤或數字它會循環的問題。@ cricket_007 – super123

+0

我明白你的意思,所以如果值檢查是空的,你不要使用try函數@ cricket_007 – super123

+0

對於一個數字,你可以使用'if UserName.isdigit()'來檢查是否有空間多於空格輸入你可以檢查'如果UserName.strip()' –