微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

清单理解if-else阶梯

如何解决清单理解if-else阶梯

给出一个句子,返回该句子将调用其字母,该字母在字母表中以1换位,但前提是该字母为a-y。

# input
'the quick brown fox jumps over the lazy dog'
# output
'uif rvjdl cspxo gpy kvnqt pwfs uif mbzy eph'

我尝试过:

a = [chr(ord(i) + 1) if ord(i) != ord(' ') else i if i =='y' else i for i in input() if ord(i) < ord('z')]
print(''.join(a))

我得到的输出y在这里用懒词,即mbzy丢失了):

uif rvjdl cspxo gpy kvnqt pwfs uif mbz eph 

解决方法

这有效:

a = 'the quick brown fox jumps over the lazy dog'
print(''.join([c if c == ' ' or ord(c) >= ord('y') else chr(ord(c) + 1) for c in a]))

输出

uif rvjdl cspxo gpy kvnqt pwfs uif mbzy eph
,

下面的代码应该可以解决问题。我更改了您的一些条件,并在最后(ord(i) < ord('z'))处删除了该条件,因为它阻止了'z'字符的处理。

此外,比较运算符可处理字符和整数,因此您不必总是在条件中使用'ord()'。

a = [chr(ord(i) + 1) if i != ' ' and i < 'y' else i for i in input()]

print(''.join(a))
,

如果我理解了说明,则此代码对我有用:

what_to_return = ""
for char in input():
    what_to_return += char if char == 'y' or char == 'z' else chr(ord(char) + 1) if 'a' <= char < 'z' else " "

输出:

uif rvjdl cspxo gpy kvnqt pwfs uif mbzy eph

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。