Python循环迭代编号输出问题:香波指令函数实现求助
问题排查与修正方案
错误点分析
- 篡改输入参数:代码开头
user_cycles = user_cycles + 1直接修改了传入的参数值,导致所有判断逻辑偏离需求,比如输入2会被改成3,后续逻辑完全错误。 - 缺失循环逻辑:需求要求循环指定次数输出带编号的内容,但原代码仅单次打印文本,未实现循环迭代。
- 输出格式不符:未添加循环编号,且输出文本缺少冒号和结尾句号,不符合
N : Lather and rinse.的格式要求。 - 额外输出错误:无论参数是否符合1-4的范围,都会强制输出
Done.,不符合题目中仅正常循环后才输出该内容的要求。
修正后的代码
def shampoo_instructions(num_cycles): if num_cycles < 1: print('Too few.') elif num_cycles > 4: print('Too many.') else: # 循环生成1到num_cycles的编号并输出对应内容 for n in range(1, num_cycles + 1): print(f"{n} : Lather and rinse.") print('Done.') user_cycles = int(input()) shampoo_instructions(user_cycles)
修正说明
- 移除了错误的参数修改语句,保留原始传入值进行逻辑判断。
- 添加
for循环:使用range(1, num_cycles + 1)生成从1到目标次数的整数序列,确保循环次数和编号完全匹配。 - 格式化输出:采用f-string拼接编号和文本,严格遵循题目要求的输出格式。
- 调整
Done.输出逻辑:仅当参数在1-4范围内时,循环结束后才输出该文本,符合题目规则。
测试验证
- 输入2时,输出:
1 : Lather and rinse.
2 : Lather and rinse.
Done.
- 输入0时,输出:
Too few.
- 输入5时,输出:
Too many.
- 输入3时,输出:
1 : Lather and rinse.
2 : Lather and rinse.
3 : Lather and rinse.
Done.
内容的提问来源于stack exchange,提问作者Acheron Parthenopaeus
相关产品推荐
相关产品推荐

