You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现朋友互相问候功能嵌套循环修正及列表推导式实现咨询

Python朋友问候程序修正方案

原有代码问题梳理

  • 问好环节循环范围设置错误,漏掉了第二个成员(列表索引1)的遍历逻辑,内层循环终止值设置错误导致无法遍历到第一个成员
  • 代码缩进不符合Python语法规范,道别环节索引逻辑完全混乱,和需求的遍历规则不匹配
  • 遍历顺序和示例要求不一致

修正后的嵌套循环实现

n = int(input())
user_list = input().split()

# 问好(Hi)环节
for current_idx in range(1, n):
    # 从当前成员的前一个倒序遍历到第一个成员
    for target_idx in range(current_idx - 1, -1, -1):
        print(f"{user_list[current_idx]}: Hi {user_list[target_idx]}!")

# 道别(Bye)环节
for current_idx in range(n):
    print(f"{user_list[current_idx]}: Bye guys!")
    # 后面的所有成员向当前成员道别
    for target_idx in range(current_idx + 1, n):
        print(f"{user_list[target_idx]}: Bye {user_list[current_idx]}!")

运行上述代码输入示例参数后,输出和需求示例匹配,如需严格对齐示例里的大小写差异,直接修改字符串中对应单词的大小写即可。

列表推导式实现方案

可以使用列表推导式实现,本质是提前生成所有需要输出的字符串,再统一打印即可,实现代码如下:

n = int(input())
user_list = input().split()

# 列表推导式生成所有输出行
output_lines = [
    # 问好环节所有行
    *[f"{user_list[c]}: Hi {user_list[t]}!" for c in range(1, n) for t in range(c-1, -1, -1)],
    # 道别环节所有行
    *[line for c in range(n) for line in [
        f"{user_list[c]}: Bye guys!",
        *[f"{user_list[t]}: Bye {user_list[c]}!" for t in range(c+1, n)]
    ]]
]

# 统一打印所有行
for line in output_lines:
    print(line)

列表推导式实现的运行效果和嵌套循环版本完全一致,适合需要先收集所有输出内容再统一处理的场景。

内容的提问来源于stack exchange,提问作者user4516038

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:36:07