如何解决我可以在print函数或常规if-else语句中定义一个函数,而不在Python中使用三元运算符吗?
当我在下面的代码块中的打印函数中使用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","candy" if total_candies == 1 else "candies")
解决方法
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",plural_or_singular(total_candies))
return total_candies % 3
to_smash(1)
to_smash(15)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。