【发布时间】:2020-10-20 04:04:18
【问题描述】:
def presses(phrase):
i = 0
for char in phrase.upper():
if char in '1ADGJMPTW*#':
i += 1
if char.isspace() == True:
i += 1
if char in 'BEHKNQUX0':
i += 2
if char in 'CFILORVY':
i += 3
if char in '23456S8Z':
i += 4
if char in '79':
i += 5
return i
我最近完成了一个 python 拼图,试图改进我的脚本;但是,我尝试将我的循环变成一个理解,但由于所有的条件,我很难做到这一点。谁能帮我试着把这个循环变成一个理解?
【问题讨论】:
-
我认为this question 有一些有用的答案和一些有用的讨论来剖析答案。
-
你为什么要把它变成一个理解结构?它们会产生各种容器或生成器,您只需计算事物并返回
int... 鉴于您正在做的事情的结构,它会像常规的 for 循环一样干净得多。 -
列表推导用于创建列表。字典推导用于创建字典。你正在计算一个整数。没有 int 理解之类的东西。
-
@adamgy 没有可比性,条件表达式需要
if-else,而不是各种ifs,至少,它在语义上不等价。
标签: python