Python 我的elif语句的语法有什么问题?

Python 我的elif语句的语法有什么问题?,python,python-3.x,Python,Python 3.x,我是初学者中最初级的一个,我收到了一条关于“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(inpu

我是初学者中最初级的一个,我收到了一条关于“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')

您的语法无效,因为
elif
else if
的缩写,并且您没有要测试的条件。试着用
else:
就可以了

另外,不要与
True
进行比较。就让这个表达独立起来吧。这不是C或Java,因此没有关于条件的参数:

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

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

以下是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')

只是提供了一个更简洁的解决方案(和pythonic)
elif
s需要一个条件。您可以使用
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

elif
也需要一个条件;你想的是
else
<代码>elif什么,确切地说@Evert,但也不能有两个
s。对于
elif
,您必须提到一个条件,如
valid(n)=False
@jornsharpe,我知道;但是我猜第二个
elif
应该缩进。你不能多次使用
else:
。我认为这只是问题的格式错误。里面有一个缩进的
if
,可能是;我没想到。如果不是这样的话,我建议你在回答中明确这一点。