2016-05-04 60 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()' –