如何匹配用户输入与列表中的玩家人数区间以筛选游戏?
问题修正方案
错误根源
原代码的if判断逻辑完全错误:你把整个玩家区间列表和输入的玩家数字做相等比较(game[2] == int(players)),列表和整数类型不同,永远不可能匹配,所以输入3时没有任何输出。
修正后的代码
games = [ ['Game 1' , 'short' , list(range(2,6))], ['Game 2' , 'short' , list(range(2,7))], ['Game 3' , 'long' , list(range(5,10))] ] players = input('players?\n\n') # 先转换为整数,避免后续重复转换或类型错误 player_count = int(players) options = [] for game in games: # 判断输入的玩家数是否在当前游戏的人数区间列表中 if player_count in game[2]: options.append(game[0]) # 循环结束后统一输出所有符合条件的游戏 print(options)
关键修改点
- 提前将输入的
players转为整数player_count,简化后续逻辑并避免类型错误 - 将判断条件从
game[2] == int(players)改为player_count in game[2],核心逻辑变为检查数字是否存在于区间列表内 - 把
print(options)移到循环外,避免每次添加游戏都打印一次,最终一次性输出所有符合条件的结果
当输入3时,代码会输出['Game 1', 'Game 2'],完全符合预期。
内容的提问来源于stack exchange,提问作者taylacline
相关产品推荐
相关产品推荐

