-3

我正在制作一个掷骰子游戏,其中分数和玩家必须存储在一个数组中,然后按顺序打印出来作为记分牌。除了对记分牌进行排序之外,我可以做到所有这些。

我已经确定我需要从字符串中删除字母(player1 37 到 37)。我正在使用的当前代码是,delchars = Player1.join(c for c in map(chr, range(256)) if not c.isalnum())但它似乎没有工作,任何人都知道该怎么做。

#code for entering Player1 
let= True
while let == True:
    delay_print("player 1 enter your username\n")
    Player1 = input()
    if len(Player1) > 20 or len(Player1) < 3:
        print("That is too long or too short, please try again") 
    else:
        let = False
#code for entering Player2
tel = True
while tel == True:
    delay_print("player 2 enter your username\n")
    Player2 = input()
    if len(Player2) > 20  or len(Player2) < 3:
        print("That is too long, or too short, please try again")
    else:
        tel = False

我想要的结果是能够按顺序打印出记分牌。此记分牌的当前代码是

print("first place is ", scoreboard[0] ,
      "\nsecond place is ", scoreboard[1], 
      "\nthird place is "  ,scoreboard[2], 
      "\nfourth place is " ,scoreboard[3], 
      "\nfifth place is "  ,scoreboard[4])
4

3 回答 3

1

正如其他人所提到的,您可能正试图以一种非常奇怪的方式做到这一点。要回答您的问题:

myString = "player1 37"
score = int(myString.split(" ").pop())

这里发生了什么:它将字符串拆分为一个列表,在空格处划分。Pop 获取列表的最后一个元素,并且 int() 将其转换为整数,因为首先将分数作为字符串是一个非常糟糕的主意。

于 2018-12-05T12:42:12.830 回答
0

一种为您的列表创建排序记分牌的方法。我不明白为什么你应该连接你的球员姓名和分数,但这些应该是单独的变量。

n=0
scoreboard = ["player1 37","player3 45","player2 75", "player32 43"]
def myFunc(e):
    return int(e.split(" ")[1])
scoreboard = sorted(scoreboard, key=myFunc, reverse=True)
print("SCOREBOARD:")
for players in scoreboard:
    print("{0}: {1}".format(n+1,scoreboard[n]))
    n+=1
于 2018-12-05T12:58:33.937 回答
0

代替

delchars = Player1.join(c for c in map(chr, range(256)) if not c.isalnum())

利用

delchars = "".join([c for c in Player1 if not c.isalnum()])
于 2018-12-05T13:15:42.580 回答