1

刚开始学习python(3.2),有个问题。我创建了一些代码来创建一些统计数据(如健康、魔法等),并且这些数字是随机生成的。这是代码...

def stats ():
print ()
print ('Some text.')

done = False
while not done :
charname = input(str('What is the name of the character? '))

hp = random.randint(5,20)
mp = random.randint(4,20)
stre = random.randint(3,20)
agi = random.randint(3,20)
spd = random.randint(3,20)
wis = random.randint(3,20)
intel = random.randint(3,20)
cha = random.randint(3,20)

print (charname)
print ('HP:',hp)
print ('Mana:',mp)
print ('Strength:',stre)
print ('Agility:',agi)
print ('Speed:',spd)
print ('Wisdom:',wis)
print ('Intelligence:',intel)
print ('Charisma:',cha)
print ()


done = input('All done? yes/no ')
if( done == 'yes' ):
    done = True
elif(done == 'no'):
    done = False



while done :
print ()
print ('Now that your stats are done, you can go on your adventure!')
done = False

现在这工作正常,但是如果我想再次查看统计信息并保持之前随机生成的相同统计信息,我该如何再次调用此函数?

对不起,如果问题有点不对劲。仍然是编程的新手。

谢谢你。

4

4 回答 4

3

由于您是编程新手,这里有一些关于存储数据的不同方式的建议(无需实际为您编码)。

首先,定义一个Character类,包含 HP、mana 等属性。我不知道你是否了解类,但这里有一个介绍。您可以采取各种技巧来避免必须明确地写下 HP、mana 等的名称,但为了学习起见,现在最好手动完成它们。

然后def是一个random_character()创建Character具有随机属性的对象的函数,就像你现在所做的那样定义,但不是将它们保存在 Python 不知道彼此有任何关系的不同变量中,而是将它们放在一个Character.

向类添加一个__str__方法,Character以便 if charis a打印出属性。Characterprint(char)

如果您希望能够跟踪字符,请使用pickle将其存储在文件中。

如果您对此有任何疑问,请提出。:)

于 2012-07-21T02:25:38.437 回答
1

您的函数现在使用局部变量来记录您生成的统计信息。您需要将它们捆绑到字典或对象中,以便可以将它们作为值传递。

例如:

def get_stats():
    stats = {}
    stats['charname'] = input(str('What is the name of the character? '))

    stats['hp'] = random.randint(5,20)
    stats['mp'] = random.randint(4,20)
    stats['stre'] = random.randint(3,20)
    stats['agi'] = random.randint(3,20)
    stats['spd'] = random.randint(3,20)
    stats['wis'] = random.randint(3,20)
    stats['intel'] = random.randint(3,20)
    stats['cha'] = random.randint(3,20)

    return stats

def print_stats(stats):
    print (stats['charname'])
    print ('HP:',stats['hp'])
    print ('Mana:',stats['mp'])
    print ('Strength:',stats['stre'])
    print ('Agility:',stats['agi'])
    print ('Speed:',stats['spd'])
    print ('Wisdom:',stats['wis'])
    print ('Intelligence:',stats['intel'])
    print ('Charisma:',stats['cha'])
    print ()
于 2012-07-21T02:26:52.793 回答
0

您可以使用def关键字来声明函数。定义

def stat():

你可以在你想要的位置调用这样的函数。 stat()

于 2012-07-21T02:19:19.170 回答
0

如果您想轻松存储在外部文件中,您可以使用该pickle模块以及您希望存储的值的字典。

例如:

import pickle
stats={}
stats['hp'] = random.randint(5,20)
stats['mp'] = random.randint(4,20)
stats['stre'] = random.randint(3,20)
stats['agi'] = random.randint(3,20)
stats['spd'] = random.randint(3,20)
stats['wis'] = random.randint(3,20)
stats['intel'] = random.randint(3,20)
stats['cha'] = random.randint(3,20)
#save the stats into the file by using:
pickle.dump(stats,yourstatfile.pkl)
#then to load it again from any program just use:
stats=pickle.load(yourstatfile.pkl) #you assign it to a variable, so if i used the variable 'lol' i would use it as lol['hp'] not stats['hp'] like it was originally used when saving.
#then you can use it just like any other dictionary:
print "your hp: "+str(stats['hp'])
于 2012-07-21T02:47:42.970 回答