如何根据输入打印数组特定值并按指定玩家数量收集名称?
问题描述
我想要创建一个程序,接收用户输入后打印数组的特定部分。目前已编写如下代码:
players=['Player 1','Player 2','Player 3','Player 4','Player 5','Player 6','Player 7','Player 8'] playerammount=int(input("The game is starting! How many players are joining? (2-8): ")) if playerammount < 2: #Make sure the max-min amount of players are accepted cont=input("Too few players.\nPress enter to try again") start() if playerammount > 2: cont=input("Too many players.\nPress enter to try again") start() names=input("What is the name of player")我希望能根据选定的玩家数量,仅询问对应数量的玩家名称,而非超出该数量的部分。同时计划使用split()方法实现一次性输入所有玩家名称以节省代码空间。
解决方案
先修正原代码的逻辑错误,再实现你要的一次性输入功能,最终代码如下:
players = ['Player 1','Player 2','Player 3','Player 4','Player 5','Player 6','Player 7','Player 8'] # 循环获取有效玩家数量 while True: try: player_amount = int(input("The game is starting! How many players are joining? (2-8): ")) if 2 <= player_amount <= 8: break elif player_amount < 2: input("Too few players.\nPress enter to try again") else: input("Too many players.\nPress enter to try again") except ValueError: input("Please enter a valid number.\nPress enter to try again") # 循环获取符合数量要求的玩家名称 while True: names_input = input(f"Please enter {player_amount} player names separated by spaces: ") names = names_input.split() if len(names) == player_amount: break else: input(f"Please enter exactly {player_amount} names.\nPress enter to try again") # 替换原数组对应数量的元素并打印特定部分 players[:player_amount] = names print("Joined players:", players[:player_amount])
关键说明
- 用
while True循环替代未定义的start()函数,实现输入错误时重复提示,避免程序崩溃 - 新增
try-except捕获非数字输入的异常,增强程序健壮性 - 使用
split()方法将用户输入的字符串按空格分割成名称列表,一次性完成所有玩家名称的输入 - 验证分割后的列表长度是否等于选定的玩家数量,确保输入符合要求
- 替换原数组的前
player_amount个元素,并打印该部分内容,实现"打印数组特定部分"的需求
内容的提问来源于stack exchange,提问作者white0desk
相关产品推荐
相关产品推荐

