首页 > 解决方案 > 我可以在 print() 函数或常规 if-else 语句中定义一个函数,而不是在 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")

标签: pythonfunctionif-statementprinting

解决方案


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)

推荐阅读