我可以在print()函数或常规ifelse语句中定义函数吗&在Python中不使用三元运算符?

2024-05-29 02:55:03 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在下面的代码块中的print函数中使用if-else语句的常规语法时,出现如下所述的错误

def to_smash(total_candies):
"""Return the number of leftover candies that must be smashed after distributing
the given number of candies evenly between 3 friends.

>>> to_smash(91)
1
"""

print("Splitting", total_candies, 
(def plural_or_singular(total_candies):
    if total_candies>1:
        return "candies"
    else:
        return "candy"),
plural_or_singular(total_candies))
return total_candies % 3

to_smash(1)
to_smash(15)

现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场########

 Output:
File "<ipython-input-76-b0584729b150>", line 10
    (def plural_or_singular(total_candies):
       ^
SyntaxError: invalid syntax

我所说的常规if-else语句

if total_candies>1:
        return "candies"
    else:
        return "candy")

使用三元运算符的相同语句

print("Splitting", total_candies, "candy" if total_candies == 1 else "candies")

Tags: ortoreturnifdef语句现场else
1条回答
网友
1楼 · 发布于 2024-05-29 02:55:03
def to_smash(total_candies):
    print("Splitting", total_candies, (lambda total_candies: "candies" if total_candies > 1 else "candy")(total_candies))        
    return total_candies % 3

to_smash(1)
to_smash(15)

但是,请注意,Python在传递函数方面并不像Javascript那样通用lambda有其局限性,特别是作为一个单行函数。相反,我建议只在print语句之外定义函数

def to_smash(total_candies):
    def plural_or_singular(total_candies):
        if total_candies>1:
            return "candies"
        else:
            return "candy"

    print("Splitting", total_candies, plural_or_singular(total_candies))
    return total_candies % 3

to_smash(1)
to_smash(15)

相关问题 更多 >

    热门问题