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

基于列表与循环的高地村民姓名列表生成编程求助

问题分析与解决方案

原代码存在的问题

  • 循环变量与列表重名:外层循环用forenames作为循环变量,直接覆盖了原列表对象,内层循环用surnames做变量也同样覆盖了原列表,导致循环逻辑混乱。
  • 未拼接完整姓名:内层循环仅打印名字,没有将名和姓组合输出,无法得到符合要求的完整姓名。
  • 语法错误:Python3中print是内置函数,必须加括号调用,原代码的print forenames不符合Python3语法规范。

修正后的代码实现

基础嵌套循环写法

surnames = ["McIntosh", "McGregor", "McDonald", "McKenzie"]
forenames = ["Angus", "Hamish", "Morag", "Mhairi"]

# 使用不同变量名,避免覆盖原列表
for first_name in forenames:
    for last_name in surnames:
        print(f"{first_name} {last_name}")

更简洁的笛卡尔积写法

利用itertools.product可以直接生成两个列表的笛卡尔积(所有可能的组合),代码更简洁高效:

import itertools

surnames = ["McIntosh", "McGregor", "McDonald", "McKenzie"]
forenames = ["Angus", "Hamish", "Morag", "Mhairi"]

# 解包组合后的元组,直接输出完整姓名
for first_name, last_name in itertools.product(forenames, surnames):
    print(f"{first_name} {last_name}")

以上两种写法都能生成所有16个不重复的姓名组合,满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:30:46