簡體   English   中英

Python 3 - 如何使用循環一次創建多個類?

[英]Python 3 - How do I use a loop to create multiple classes at once?

我正在嘗試制作一個 D&D 角色創建者,盡管我需要為其中的每個“類”和“種族”制作一個類的單獨實例。

我已經做到了,每個實例都在單獨的行上創建,一個接一個(所以現在大約有 45 行,包括注釋),但是,我想知道我是否可以創建一個循環來創建所有實例幾行代碼。

我已經查看了其他回復,盡管它們都沒有完全按照我的意願工作,所以我希望有人可以在這里幫助我。

現在的代碼如下所示:

## Classes ##

 #creates barbarian as a class
Barbarian = DnD_Class("Barbarian")
 #creates bard as a class
Bard = DnD_Class("Bard")
 #creates cleric as a class
Cleric = DnD_Class("Cleric")
 #creates druid as a class
Druid = DnD_Class("Druid")
 #creates fighter as a class
Fighter = DnD_Class("Fighter")
 #creates monk as a class
Monk = DnD_Class("Monk")
 #creates paladin as a class
Paladin = DnD_Class("Paladin")
 #creates ranger as a class
Ranger = DnD_Class("Ranger")
 #creates rogue as a class
Rogue = DnD_Class("Rogue")
 #creates sorcerer as a class
Sorcerer = DnD_Class("Sorcerer")
 #creates warlock as a class
Warlock = DnD_Class("Warlock")
 #creates wizard as a class
Wizard = DnD_Class("Wizard")

## Races ##

 #creates dragonborn as a race
Dragonborn = DnD_Race("Dragonborn")
 #creates dwarf as a race
Dwarf = DnD_Race("Dwarf")
 #creates elf as a race
Elf = DnD_Race("Elf")
 #creates gnome as a race
Gnome = DnD_Race("Gnome")
 #creates half-elf as a race
Half_Elf = DnD_Race("Half-Elf")
 #creates halfling as a race
Halfling = DnD_Race("Halfling")
 #creates half-orc as a race
Half_Orc = DnD_Race("Half-Orc")
 #creates human as a race
Human = DnD_Race("Human")
 #creates tiefling as a race
Tiefling = DnD_Race("Tiefling")

我建議在以類名為鍵的字典中收集您的類,而不是為每個類命名變量:

dnd_classes = {
    class_name: DnD_Class(class_name)
    for class_name in (
        "Barbarian",
        "Bard",
        "Cleric",
        "Druid",
        "Fighter",
        "Monk",
        "Paladin",
        "Ranger",
        "Rogue",
        "Sorcerer",
        "Warlock",
        "Wizard",
    )
}

這使您可以通過名稱輕松查找類,因此您可以執行以下操作:

try:
    char_class = dnd_classes[input("Pick a class: ")]
except KeyError:
    print("Class must be one of:", ", ".join(dnd_classes))

代替:

user_class = input("Pick a class" )
if user_class == "Barbarian":
    char_class = Barbarian
elif user_class == "Bard":
    # ugggggh

暫無
暫無

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

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