2017-04-25 14 views
-1

バットをストレートにする私はプログラミングに新しいので、基本的な質問をする前にお詫び申し上げます。私は以前の答えを研究したが、私はまだ固執している。次の問題に取り組んでいます。リスト内にネストされたタプルの要素を変更する方法

Q: ロールプレイングゲーム用のキャラクタークリエイタープログラムを作成してください。強さ、健康、知恵、敏捷性の4つの属性に費やすポイントのプールをプレイヤーに与える必要があります。プレイヤーは任意のアトリビュート上のポイントを使うことができなければならず、アトリビュートからポイントを獲得してプールに戻すこともできるはずです。

私はこの解決策を見つけましたが、本で教えられていない用語を使用していて、リストや辞書が含まれていないので満足できません(章全体がこれでしたので、新しい知識を必要とする章の演習)。 https://github.com/malmhaug/Py_AbsBegin/tree/master/Ch5E2_CreateCharacter

私はいくつかの助けがありますか?ここではiveがこれまでに得たものがあります。事前に

おかげ

#Character creator program; players have 30 points to spend across 4 attributes 
#Players can also change their choices 

#character attributes 
character = [('Strength', 0), ('Health', 0), ('Wisdom', 0), ('Dexterity', 0)] 

total = 30 
int(total) 
print('\nYou have ', total, 'points to spend') 

choice = None 
while choice != '0': 
    print(
''' 
Please choose an option: \n 
\t0: Exit 
\t1: Display CV 
\t2: Denote Strength 
\t3: Denote Health 
\t4: Denote Wisdom 
\t5: Denote Dexterity 
\t6: Change an attribute 

''' 
) 

    choice = input('Choice ') 
    print() 

#Exit 
    if choice == '0': 
     print('Goodbye') 
     break 
    elif choice == '1': 
     print('Your Character:') 
     print('Attibute\tLevel') 
     for i in character: 
      print(i) 

    elif choice == '2': #Adds points to the Strength value whilst 
         #subtracting them from total 

     character[0] = (attribute, value) 
     strength = int(input('How strong is your character? ')) 
     if strength <= total: 
      value = strength 
      total -= strength 
      print('You have ', total,'points remaining') 
     elif strength > total: 
      print('You dont have enough points') 
     else: 
      print('Sorry, invalid entry') 

    elif choice == '3': #Adds points to the Health value whilst 
         #subtracting them from total 

     attribute, value = ('Health', 0) 
     health = int(input('How robust is your character? ')) 
     if health <= total: 
      value = health 
      total -= health 
      print('You have ', total,'points remaining') 
     elif health > total: 
      print('You dont have enough points') 
     else: 
      print('Sorry, invalid entry') 

    elif choice == '4': #Adds points to the Wisdom value whilst 
         #subtracting them from total 

     attribute, value = ('Wisdom', 0) 
     wisdom = int(input('How wise is your character? ')) 
     if wisdom <= total: 
      value = wisdom 
      total -= wisdom 
      print('You have ', total,'points remaining') 
     elif wisdom > total: 
      print('You dont have enough points') 
     else: 
      print('Sorry, invalid entry') 

    elif choice == '5': #Adds points to the Dexterity value whilst 
         #subtracting them from total 

     attribute, value = ('Dexterity', 0) 
     dexterity = int(input('How dextrous is your character? ')) 
     if dexterity <= total: 
      value = dexterity 
      total -= dexterity 
      print('You have ', total,'points remaining') 
     elif dexterity > total: 
      print('You dont have enough points') 
     else: 
      print('Sorry, invalid entry') 


    elif choice == '6': #Changes the 'value' element in the tuple, chosen by the 
         #user's input 



     for skill in character: #shows the user the current character attributes 
      print(skill) 

     change = input('Enter an attribute to change: ')#the attriute to change 
     for skill in character:#iterates over the list's tuples 

      if change == skill[0]:#tests the change string against the element in the 1st position of each tuple 
       total += skill[1] 
       value = int(input('What do you want the new value to be? '))#sets the new value to the second element of the tuple 

       if value <= total: 
         total -= new_value 
         print('You have ', total,'points remaining') 
       elif new_value > total: 
        print('You dont have enough points') 
       else: 
        print('Sorry, invalid entry') 
input('\n\nPress enter to exit') 
+3

とすることができます。質問の説明だけでなく、提供されたコードと一緒に? –

+1

なぜディクテーションの代わりにタプルのリストを使用するのですか? –

答えて

0

タプルは、したがって、あなたがそれらの内部で値を変更することはできません、不変です。

辞書を使用することをお勧めします。

0

あなたがcharacterの要素を変更したい場合は、辞書、またはネストされたリスト、またはリストのタプルを使用する必要がありますいずれかが、あなたはタプル
辞書のリストを使用することはできません。

character = { 'Strength' : 0, 'Health' : 0, 'Wisdom' : 0, 'Dexterity' : 0 } 

リスト:

character = [ ['Strength', 0], ['Health', 0], ['Wisdom', 0], ['Dexterity', 0] ] 

タプル:

character = (['Strength', 0], ['Health', 0], ['Wisdom', 0], ['Dexterity', 0]) 

「強度」に10ポイントを追加する場合は、character['Strength'] += 10、dictの場合はcharacter[0][1] += 10、リストまたはタプルを使用する場合は

関連する問題