如何将笑脸计数+1的回复逻辑转为带return的Python函数?
问题
题目要求
间谍需确保短信信息不落入他人之手,短信回执的有效性由其中的笑脸表情(即字符串:)的出现次数)决定。回复短信需包含比收到的短信多一个的笑脸表情,且仅由这些:)组成,用单个空格分隔,无首尾空格。请创建生成并返回该回复的函数。
示例输入输出:
- 输入:
"hey important info to follow :)" - 输出:
":) :)" - 输入:
"have u made contact?" - 输出:
":)"
用户问题
我已用print语句实现了该逻辑,但需要改为使用return的函数。我曾用end=" "实现同行打印,但无法用return实现。以下是我的错误代码:
def reply(s: str) -> str: for i in range(s.count(':)') + 1): return ":)" print(reply("hey important info to follow :)"))
请帮忙修正该函数,使其正确返回符合要求的回复字符串。
解决方案
你的错误在于循环里直接return ":)",这会导致函数第一次循环就返回单个:),完全没处理数量要求。
正确思路:
- 统计输入字符串中
:)的出现次数,加1得到需要生成的笑脸数量 - 生成对应数量的
:)列表 - 用空格拼接成符合要求的字符串返回
修正后的代码:
def reply(s: str) -> str: smiley_count = s.count(':)') + 1 return ' '.join([':)'] * smiley_count) # 测试示例 print(reply("hey important info to follow :)")) # 输出: :) :) print(reply("have u made contact?")) # 输出: :)
解释:
[':)'] * smiley_count会创建包含指定数量:)的列表,比如数量为2时就是[":)", ":)"]' '.join(...)会用单个空格拼接列表元素,自动避免首尾空格,完全符合题目要求
内容的提问来源于stack exchange,提问作者Underleague
相关产品推荐
相关产品推荐

