2

私は非常に初心者の学習者で、Python のクラスを受講して学習しています。この質問はクラスとは関係ありません。クラスを進めているときに取り組んでいるプロジェクトだけです(クラスで学んだ概念を使用して、更新、拡張、クリーンアップする簡単なゲームに取り組んでいます)コード。)

私は現在、タプル、リスト、および辞書について学んでおり、単純なタプルを使用すると多くの IF ステートメントがクリアされ、コードが合理化されると考えました。ただし、希望どおりに機能させることはできません。

基本的に、すべてのクラスに一連のタプルがあります (注: これらはトレーニング分類であり、Python クラスではありません)。それらには異なる番号が含まれており、すべてのクラスの名前のリストを含むタプルがあります。コードのある時点で、キャラクターのクラスを決定するためにユーザー入力を求めます。その入力を使用して、タプルから値を抽出できるようにしたいと思います (スプライスという用語は正しいですか?)。たとえば、タプルの 3 番目の位置にある値を別の値に追加したいとします。現在、同じ名前のタプルに関連付けられたユーザー入力を取得できません。これを行う方法はありますか?


# Class list
Apprentice = (6, 0, 0, 0, 0, 0, 0)
Warrior = (12, 2, 0, 2, 0, 0, 0)
Paladin = (14, 2, 0, 2, 1, 0, 1)
Barbarian = (12, 6, 0, 3, -1, -1, -1)
Blademaster = (10, 4, 4, 0, 0, 0, 0)
Assassin = (8, 0, 8, -2, 0, 0, 0)
Rogue = (8, 0, 4, 0, 0, 0, 0)
Monk = (10, 2, 2, 2, 2, 2, -4)
Bard = (8, 0, 0, 0, 0, 0, 4)
Mage = (6, 0, 0, 0, 2, 2, 0)
Priest = (6, 0, 0, 0, 1, 2, 1)
Wizard = (4, -2, -2, -2, 6, 8, 0)
Scholar = (6, -1, -1, 0, 4, 4, 0)
Necromancer = (6, 0, 0, 0, 6, 6, -5)
classList = ('Apprentice', 'Warrior', 'Priest', 'Mage', 'Wizard', 'Rogue', 'Bard', 'Paladin', 'Scholar', 'Necromancer', 'Barbarian', 'Blademaster', 'Assassin', 'Monk')

validClass = False
while validClass == False:
    charClass = raw_input('What type of training have you had (Class)? ')
    if charClass in classList:
        print ''
        validClass = True
    else:
        print 'That is not a valid class.'
4

5 に答える 5

1

辞書を使用することをお勧めしますが、それが割り当てであり、辞書の使用が許可されていない場合は、次のことができます。

validClass = False
while validClass == False:
    charClass = raw_input('What type of training have you had (Class)? ')
    if charClass in classList:
        print eval(charClass)
        validClass = True
    else:
        print 'That is not a valid class.'

このeval関数を使用すると、その関数内で Python コードを実行できます。繰り返しますが、辞書を使用することをお勧めします。

于 2013-11-07T16:33:52.850 に答える