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

あなたはプログラミングに慣れていないので、データを保存する別の方法に関するアドバイスを次に示します (実際にコーディングする必要はありません)。

まず、CharacterHP、マナなどの属性を持つクラスを定義します。クラスについてまだ知っているかどうかはわかりませんが、ここに紹介があります。HP やマナなどの名前を明示的に記述しなければならないことを回避するためにできるさまざまなトリックがありますが、学習のために、今のところすべて手動で行う方がよいでしょう。

次に、現在行っているように定義されたランダムな属性を持つオブジェクトを作成する関数ですが、defそれらを異なる変数に保存する代わりに、Python が互いに何の関係もないことを知りません。random_character()CharacterCharacter

クラスに__str__メソッドを追加して、が の場合に属性を出力するようにします。CharactercharCharacterprint(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

外部ファイルに簡単に保存したい場合は、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 に答える
0

キーワードを使用defして関数を宣言できます。定義

def stat():

目的の場所でこのように関数を呼び出すことができます。 stat()

于 2012-07-21T02:19:19.170 に答える