首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么才能让这个更像毕加索呢?

我怎么才能让这个更像毕加索呢?
EN

Stack Overflow用户
提问于 2013-08-12 06:18:03
回答 4查看 115关注 0票数 0

我正在处理一个函数,以便在一组中找到一个与给定日期最匹配的字符串。我决定用一个类似CSS选择器的评分系统来做,因为它有相同的特定概念。

其中一部分是计算出最小的分数。如果我在找一个日期(年度月日),那么最低得分是100。如果我要找一个月(只是一个月和一年),那么它是10,如果我只有一年,那么它是1:

代码语言:javascript
复制
minscore = 1
if month: minscore = 10
if day: minscore = 100

我对Python非常陌生,所以我不知道所有的技巧。我怎样才能使这更多(最)的毕达通?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-12 06:19:13

您可以使用三元表达式

代码语言:javascript
复制
minscore = 100 if day else 10 if month else 1

来自佩普-308(条件表达式):

有动机的用例是使用" and“和"or”实现相同效果的容易出错的尝试。

票数 1
EN

Stack Overflow用户

发布于 2013-08-12 06:23:01

坚持使用容易读的代码:

代码语言:javascript
复制
if day:
    minscore = 100
elif month:
    minscore = 10
else:
    minscore = 1
票数 3
EN

Stack Overflow用户

发布于 2013-08-12 06:23:43

稀疏胜于稠密;

代码语言:javascript
复制
minscore = 1
if month:
    minscore = 10
elif day:
    minscore = 100

这也是在PEP 8中引用的

通常不鼓励复合语句(同一行的多个语句)。 是:

代码语言:javascript
复制
if foo == 'blah':
    do_blah_thing() do_one() do_two() do_three() 

而不是:

代码语言:javascript
复制
if foo == 'blah': do_blah_thing() do_one(); do_two(); do_three()

我想一个条件语句(即三元表达式)可能是“大多数pythonic”的方法,但是我认为引用Python禅宗的话会更好。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18180624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档