如何根据输入整数N实现谢尔顿敲门序列循环输出的Python问题
问题诊断
现有代码存在3个核心问题:
- 字符串拆分错误:给定的原始字符串没有空格分隔,调用无参数的
split()方法默认按空白字符切割,最终只能得到包含完整字符串的单元素列表,无法拆分出单个单词。 - 缺少循环逻辑:没有实现基础序列的循环重复,也没有根据输入的时长N截取对应长度的内容。
- 无输入接收逻辑:没有读取用户输入的整数N的相关代码。
修正后可运行代码
# 读取输入的整数N n = int(input()) # 定义谢尔顿敲门的基础循环序列,每4个元素为一轮 base_seq = ['knock!', 'knock!', 'knock!', 'penny!'] # 循环取前N个元素拼接为结果字符串 result = ''.join([base_seq[i % 4] for i in range(n)]) # 输出结果 print(result)
如果一定要基于你给出的原始字符串做拆分,可以将基础序列的定义部分替换为以下代码:
raw_str = "knock!knock!knock!penny" base_seq = [item + '!' for item in raw_str.split('!') if item]
效果验证
输入为6时,程序会取前6个元素依次拼接,最终输出和你给出的预期完全一致:knock!knock!knock!penny!knock!knock!
内容的提问来源于stack exchange,提问作者Maliha Kabir
相关产品推荐
相关产品推荐

