python - 如何在乘法和 mod 中不乘以空间?
问题描述
我已经成功地制作了一个函数,它接受一个字符串和一个 int 并返回一个从参数字符串派生的新字符串,但重复/删除了一些字符。每个字符都乘以它的 ord mod x。不过,我不确定如何防止它出现在空白处。
这是整个代码块,包括 doctest:
def balloon_string(string, x):
"""
>>> balloon_string('abcdef', 4)
'abbccceff'
>>> balloon_string('A great day!', 4)
'Agggrreaay!'
>>> balloon_string('ABC 1234', 3)
'AAC 1224'
"""
l = []
for ch in string:
l.append(str(ch*(ord(ch)%x)))
return ''.join(l)
我从中得到的输出是:
Expecting:
'abbccceff'
ok
Expecting:
'Agggrreaay!'
ok
Expected:
'AAC 1224'
Got:
'AAC 1224'
如您所见,最后一个有一个额外的空间,我不知道如何摆脱它。
解决方案
您可以像这样在一行中完成所有操作:
def balloon_string(string, x):
return ''.join((c * (ord(c) % x)) if c != ' ' else c for c in string)
print(balloon_string('abcdef', 4))
# abbccceff
print(balloon_string('A great day!', 4))
# A gggrrea ay!
print(balloon_string('ABC 1234', 3))
# AAC 1224
推荐阅读
- c# - 在 c# 中反序列化大小为 1 的 JSON 数组
- java - JDK 11 作为 JAVA_HOME?
- javascript - html 响应式文本区域/按钮/表格
- android - 无法在 mac os 的 android 平台上运行 React Native 项目
- python - 使用列表推导生成各种数字列表:为什么比较有效?
- ios - 如何在恢复代码之前等待异步 Firebase 函数?
- mysql - SQL - 按年平均价值
- typescript - 我可以定义一个具有“可覆盖”返回类型的通用函数吗?
- ruby - 有没有办法让一个变量的一个类从另一个类继承?
- php - 一次更新 1000 条记录的多行