比方说,我在五个Rock,Paper和Scissors游戏中得分如下:
player_score = [1,0,1,1,0]
cpu_score = [0,1,0,0,1]
我想制作一个二维数组(不包括numpy或pandas),以记录玩过的游戏(如记分板)。因此,最终输出看起来类似于以下内容:
G1 G2 G3 G4 G5
Player 1 0 1 1 0
CPU 0 1 0 0 1
有什么建议吗?
答案 0 :(得分:0)
我认为您正在寻找的是DataFrame?
import pandas as pd
player_score = [1,0,1,1,0]
cpu_score = [0,1,0,0,1]
df = pd.DataFrame([player_score, cpu_score])
df.columns = ["G1", "G2", "G3", "G4", "G5"]
df.index = ['Player', 'CPU']
print(df)
给予
G1 G2 G3 G4 G5
Player 1 0 1 1 0
CPU 0 1 0 0 1
答案 1 :(得分:0)
Numpy和pandas是Python编程中的强大工具,但是在没有它们的情况下尝试工作会帮助您更好地学习。它们提供了各种有用的函数和对象类,如果没有它们就可以工作,这意味着您可能必须定义自己的函数。
要显示所需的计分板,建议您定义自己的计分板类。我会给你一个这样的例子:
class ScoreBoard:
def __init__(self):
self.player_score = [1,0,1,1,0]
self.cpu_score = [0,1,0,0,1]
def __str__(self):
string = '\t'
for i in range(len(self.player_score)):
string += 'G%d '%(i+1)
string = string + '\n\nPlayer\t'
for i in range(len(self.player_score)):
string += '%d '%self.player_score[i]
string = string + '\nCPU\t'
for i in range(len(self.cpu_score)):
string += '%d '%self.cpu_score[i]
return string
def record_score(self, player_score, cpu_score):
self.player_score.append(player_score)
self.cpu_score.append(cpu_score)
如果您
a = ScoreBoard()
print(a)
a.record_score(1, 0)
print(a)
,将显示:
G1 G2 G3 G4 G5
Player 1 0 1 1 0
CPU 0 1 0 0 1
G1 G2 G3 G4 G5 G6
Player 1 0 1 1 0 1
CPU 0 1 0 0 1 0
很显然,应该做更多的工作来使此类工作顺利。
1)初始player_score和cpu_score必须为[]
2)如果计分板为空怎么办?当它为空时,您会装饰字符串输出吗?
3)是否有可能像Rock vs. Rock一样平局?如果没有,当您拥有player_score时,可以计算cpu_score。在这种情况下,不需要这两个之一。
4)也许它可以成为更多玩家较多的游戏的记分牌?
5)也许您甚至可以定义自己的带标签的2D数组,例如pandas.DataFrame?
如果您还没有学习过Python中的Object-Oreinted-Programming,您可以自由询问。您还可以在Python Programming Tutorials中了解更多信息。