簡體   English   中英

TypeError:字符串索引必須是整數

[英]TypeError: string indices must be integers

因此,我試圖為神奇寶貝編寫代碼,並且將下面的代碼部分設置為打印出神奇寶貝的統計信息。 請注意,這三個詞典之前還有715個其他詞典:

Xerneas = {'HP': 126, 'Atk': 131, 'Def': 95, 'SAtk': 131, 'SDef': 98, 'Spd': 99,
           'Ability': "Fairy Aura", 'Type': "Fairy"}
Yveltal = {'HP': 126, 'Atk': 131, 'Def': 95, 'SAtk': 131, 'SDef': 98, 'Spd': 99,
           'Ability': "Dark Aura", 'Type': "Dark/Flying"}
Zygarde = {'HP': 108, 'Atk': 100, 'Def': 121, 'SAtk': 81, 'SDef': 95, 'Spd': 95,
           'Ability': "Aura Break", 'Type': "Dragon/Ground"}

Mode = input('Which mode? ')
if Mode == "Pokedex":
    Pokemon = input("Which Pokemon? ")
    print(Pokemon['HP'],
          Pokemon['Atk'],
          Pokemon['Def'],
          Pokemon['SAtk'],
          Pokemon['SDef'],
          Pokemon['Spd'],
          Pokemon['Ability'],
          Pokemon['Type'])

因此,我嘗試運行代碼並調用Zygarde的信息,但是出現了以下錯誤:

Traceback (most recent call last):
  File "/Users/Cobalt/Documents/Python/Pokédex.py", line 154, in <module>
    print(Pokemon['HP'],
TypeError: string indices must be integers
>>> 

有解決這個問題的簡便方法嗎? 如有必要,我願意重新格式化718個詞典。

順便說一句,這是我在本網站上的第一個問題,所以請不要對我太苛刻。

您需要像這樣創建一個多維數組

pokemon = { 'Xerneas':  {'HP': 126, 'Atk': 131, 'Def': 95, 'SAtk': 131, 'SDef': 98, 'Spd': 99,
           'Ability': "Fairy Aura", 'Type': "Fairy"},
  'Yveltal': {'HP': 126, 'Atk': 131, 'Def': 95, 'SAtk': 131, 'SDef': 98, 'Spd': 99,
           'Ability': "Dark Aura", 'Type': "Dark/Flying"},
  'Zygarde': {'HP': 108, 'Atk': 100, 'Def': 121, 'SAtk': 81, 'SDef': 95, 'Spd': 95,
           'Ability': "Aura Break", 'Type': "Dragon/Ground"}
}

然后,當您詢問要使用哪種神奇寶貝時:

    pokemon_type = input("Which Pokemon? ")
    print(pokemon[pokemon_type]['HP'],
          pokemon[pokemon_type]['Atk'],
          pokemon[pokemon_type]['Def'],
          pokemon[pokemon_type]['SAtk'],
          pokemon[pokemon_type]['SDef'],
          pokemon[pokemon_type]['Spd'],
          pokemon[pokemon_type]['Ability'],
          pokemon[pokemon_type]['Type'])
Pokemon = input("Which Pokemon? ")

這使Pokemon成為一個字符串。 然后,您嘗試通過執行以下操作訪問此字符串:

Pokemon['HP']

現在,解釋器抱怨是因為HP在字符串上下文中不是有效索引。 我猜你打算在這兒放字典嗎?

您可能想要做的事情與此類似:

制作一個包含所有神奇寶貝的字典,例如,我們可以稱它為pokemon_dict

pokemon_dict = { "xerneas" : Xerneas, .....}

selection = input("Which Pokemon? ")
pokemon_selected = pokemon_dict[selection]
print(pokemon_selected['HP'])

這個說法

Pokemon = input("Which Pokemon? ")

Pokemon設置為字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM