Python变量遍历优化:世界杯抽奖程序代码简化问询
优化方案
1. 批量处理种子队洗牌
不要单独定义Seed1到Seed8变量,把所有种子分组放进一个二维列表,通过循环一次性完成洗牌,彻底消除重复代码:
- 用
seeds列表存储所有种子队分组 - 遍历列表中的每个分组,执行
random.shuffle()
2. 简洁专业的结果打印
用f-string结合str.join()替代繁琐的字符串拼接,代码更易读、易维护。
完整优化代码
import random # 玩家列表 players = ["Alice", "Bob", "Charlie", "Delilah"] random.shuffle(players) # 所有种子队分组,统一存入二维列表 seeds = [ ["Brazil", "Argentina", "France", "Spain"], ["England", "Germany", "Netherlands", "Portugal"], ["Belgium", "Denmark", "Uruguay", "Croatia"], ["Serbia", "Switzerland", "Senegal", "Mexico"], ["USA", "Poland", "Ecuador", "Morocco"], ["Wales", "Japan", "Ghana", "Canada"], ["Qatar", "South Korea", "Iran", "Cameroon"], ["Australia", "Saudi Arabia", "Tunisia", "Costa Rica"] ] # 批量洗牌每个种子分组 for group in seeds: random.shuffle(group) # 分配并打印结果(用enumerate高效获取索引) for idx, player in enumerate(players): # 从每个种子分组中提取对应位置的球队 assigned_teams = [group[idx] for group in seeds] # 用join拼接球队列表,f-string格式化输出 print(f"{player} = {', '.join(assigned_teams)}")
你之前代码报错的原因
你尝试的for a in range(1,9): random.shuffle(range[a])存在两个问题:
range(1,9)生成的是整数序列,不是存储变量的容器,无法通过range[a]获取Seed1这类变量- 动态通过数字拼接变量名不是Python的规范写法,把相关数据放进列表/字典才是正确的做法
内容的提问来源于stack exchange,提问作者Dino
相关产品推荐
相关产品推荐

