Skip to main content
 首页 » 编程设计

python之在 return 语句的同一行使用 if/else

2025年05月04日21lori

我试图通过将我的条件语句放在一行中来压缩我的代码。

def get_middle(s): 
    if len(s)%2 == 1: return(s[int(len(s)/2)])  
    else: return(s[int(len(s)/2)-1] + s[int(len(s)/2)]) 

这很好用。 我试着这样做:

return(s[int(len(s)/2)]) if len(s)%2 == 1 else return(s[int(len(s)/2)-1] + s[int(len(s)/2)]) 

但是我在该行的末尾遇到了语法错误。

错误:

Traceback (most recent call last): 
  File "main.py", line 1, in <module> 
    from solution import * 
  File "/home/codewarrior/solution.py", line 5 
    return(s[int(len(s)/2)]) if (len(s)%2 == 1) else (return(s[int(len(s)/2)-1] + s[int(len(s)/2)])) 
                                                           ^ 
SyntaxError: invalid syntax 

还有: 这主要是因为我很好奇。我知道在现实世界的应用程序中,这段代码很难解释。

请您参考如下方法:

您不能再次调用 return 关键字,因为您已经在 if 和 else 的开头设置了 return。

改为这样做:

return(s[int(len(s)/2)]) if len(s)%2 == 1 else (s[int(len(s)/2)-1] + s[int(len(s)/2)]) 

此外,

那条线非常不清楚,也许你应该坚持使用常规的 if 和 else 语句,因为一个月后你可能不会 promise 任何事情。