2017-02-11 90 views
-2

我是初学者最初学者,我在'elif'后得到了分号的语法错误消息为什么?另外,如果代码工作,否则?我的elif语句的这种语法有什么问题?

#a - this program uses function valid(x) to determine if the user's input is a positive, non-zero number while imposing a limit of 3 attempts 

def valid(x): 
    return (x > 0) 
n = int(input('Please input a positive non-zero number: ')) 
if(valid(n)== True): 
    print(n,'is valid') 
elif: 
    print(u = int(input('error please input a positive non-zero number: '))) 
    if(valid(u)== True): 
     print(u,'is valid') 
elif: 
    print(m = int(input('error please input a positive non-zero number: '))) 
    if(valid(m)== True): 
      print(m,'is valid') 
+0

'elif'也需要一个条件;你在想'别的'。 – Evert

+3

呃...'elif'*什么*,正是?! – jonrsharpe

+1

@Evert但是不能有两个'else's,要么。 – jonrsharpe

回答

0

以下是Python中的if..else条件的语法正确。你跟着这个吗?

if expression1: 
    statement(s) 
elif expression2: 
    statement(s) 
elif expression3: 
    statement(s) 
else: 
    statement(s) 

ELIF语句可以检查多个表达式为TRUE并作为其中的一个条件值为TRUE立即执行的代码块。在你的代码片段中,没有表达式在elif声明中执行!

我相信你需要像下面这样的东西。

# This program uses function valid(x) to determine if the user's input is positive, non-zero number while imposing a limit of 3 attempts 
def valid(x): 
    return (x > 0) 

n = int(input('Please input a positive non-zero number: ')) 
if(valid(n)== True): 
    print(n,'is valid') 
else: 
    n = int(input('error please input a positive non-zero number: ')) 
    if(valid(n)== True): 
     print(n,'is valid') 
    else: 
     n = int(input('error please input a positive non-zero number: ')) 
     if(valid(n)== True): 
      print(n,'is valid') 
0

你的语法是无效的,因为elif是短期的else if,你不必测试的条件。尝试使用else:

另外,不要与True比较。让表情独立。这是不是C或Java,所以周围的条件语句没有括号:

if(valid(n)== True): 
    print(n,'is valid') 

变为:

if valid(n): 
    print(n, 'is valid') 
+0

你不能多次使用'else:'。 – zondo

+0

我认为这只是格式不好的问题。那里有一个缩进的“if”。 –

+0

这可能是;我没有想到这一点。不过,如果不是,我会建议在答案中说清楚。 – zondo

0

只是提供一个更简洁的解决方案(和pythonic)。 elif需要一个条件。您可以使用for循环来检查密码三次。如果密码正确,则循环结束。

def valid(x): 
    return x > 0 

for i in range(3): 
    n = input('Please input a positive non-zero number: ') 
    if valid(n): 
     print(n, 'is valid') 
     break