2013-09-23 26 views
1

我有一个GUI和一个运行Rock Paper Scissors的记分板的程序,但每次程序运行时,Wins,Draws和Loses计数都设置为零。有什么办法可以阻止计数被重置并不断添加到?每当我运行一个程序时更改一个变量 - Python

在代码的开始:

x = int(0) 
    user = 0 

    score = str(x) 
    draws = str(x) 
    loses = str(x) 

,但我不想每次程序运行

+2

序列化是一个选项,请参阅'pickle'模块,例如[here](http://docs.python.org/2/library/pickle.html#example) – 2013-09-23 17:53:41

+0

如果您想跨多次运行保存变量该程序需要在程序结束时将值写入文件,并在开始时再次读入。 – BrenBarn

+0

每次想要再玩一次时,请勿重新启动程序。让代码循环运行一轮。 –

回答

0

时间他们将是零,因为它是被宣布为0的变量设置为0,所以如果你不失去保存到一个文件,然后启动加载。

例子:

def save(): 
    f = open('lastgame','w') 
    f.write(str(score)+','+str(draws)+','+str(loses)) 
    f.close() 

def load(): 
    f = open('lastgame','r') 
    score,draws,loses = f.read().split(',') 
    f.close() 
    return score,draws,loses 

您还可以使用sys.argv所以你输入他们在命令行。

import sys 
score = sys.argv[1] 
draws = sys.argv[2] 
loses = sys.argv[3] 

然后使用python file.py 6 10 5会让你开始得分= 6的运行环境,吸引= 10,失去= 5。但是,如果你不调用这些参数,你会得到一个IndexError。

+0

使用sys.argv,我如何将它实现到代码中,因为它始终提供:Traceback(最近调用最后一个): 文件“C:\ Users \ ---- \ ----- \ CODE \ Rock Paper Scissors GUI.py“,第22行,在 score = sys.argv [1] IndexError:列表索引超出范围 –

相关问题