CheckIO是一个通过闯关游戏学习编程的网站(Python和JavaScript)。通过解题开发新“岛屿”,同时,通过做任务获得Quest Points解锁会员题目。
文章内容:题目、我自己的思路和代码以及优秀代码,如果想看大神解题可以直接跳到“优秀代码”部分。
本题链接:https://py.checkio.org/en/mission/right-to-left/
题目
将多个字符串中的“right”改为“left”,并组合成一个字符串
输入: 字符串序列组成的元组
输出: 以逗号分隔的字符串
举个栗子:
left_join(("left", "right", "left", "stop")) == "left,left,left,stop"
left_join(("bright aright", "ok")) == "bleft aleft,ok"
left_join(("brightness wright",)) == "bleftness wleft"
left_join(("enough", "jokes")) == "enough,jokes"
应用场景:对字符串的操作
假设:
- 0 ≤字符串长度 < 42
难度: Elementary
题目框架
def left_join(phrases: tuple) -> str:
# Your code here
return ''
if __name__ == '__main__':
print('Example:')
print(left_join(("left", "right", "left", "stop")))
#These "asserts" using only for self-checking and not necessary for auto-testing
assert left_join(("left", "right", "left", "stop")) == "left,left,left,stop", "All to left"
assert left_join(("bright aright", "ok")) == "bleft aleft,ok", "Bright Left"
assert left_join(("brightness wright",)) == "bleftness wleft", "One phrase"
assert left_join(("enough", "jokes")) == "enough,jokes", "Nothing to replace"
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")
思路及代码
思路
- 依次判断各个字符串中是否有“right”,有的话改为“left”
- 将各字符串结合为一个以逗号分隔的长字符串
代码
def left_join(phrases: tuple) -> str:
list1 = []
for i in phrases:
if 'right' in i:
list1.append(i.replace('right', 'left'))
else:
list1.append(i)
return ','.join(list1)
优秀代码
No.1
def left_join(phrases):
return (",".join(phrases)).replace("right","left")
No.2
def left_join(phrases: tuple) -> str:
words = list(phrases)
for i in range(len(words)):
words[i] = words[i].replace('right', 'left')
return ','.join(words)