![](/img/trans.png)
[英]How can I save a list created in a piece of code so that I can use it again when I use the same code again?
[英]How can i make a function out of this so i don't have to copy paste the same piece of code?
目前在我的代码中,我只是复制和粘贴了 20 多次这样的代码块,我需要一些帮助来了解如何将其变成 function 以节省空间
if chosenrace == "Var Human":
randclass = random.choice(varhumanclasses)
if chosenrace == "Aasimar":
randclass = random.choice(aasimarclasses)
if chosenrace == "Aarakocra":
randclass = random.choice(aarakocraclasses)
if chosenrace == "Warforged":
randclass = random.choice(warforgedclasses)
一个可能的解决方案是创建一个将字符串链接到变量的字典。 例如,
class_dict = {
"Var Human": varhumanclasses,
"Aasimar": aasimarclasses
}
然后,您可以创建一个 function,它采用所选的比赛字符串并使用字典中正确的 class 变量返回一个随机选择。
def random_class(race):
return random.choice(class_dict[race])
像这样
def pick(chosenrace): return random.choice({
"Var Human" : varhumanclasses,
"Aasimar" : aasimarclasses,
"Aarakocra" : aarakocraclasses,
"Warforged" : warforgedclasses,
}.get(chosenrace, notfoundclasses))
我喜欢 @tintins7a6164 的解决方案并对其投了赞成票。 如果您不想维护字典,可以考虑下面的代码段。 它假设在全局 scope 上声明了varhumanclasses
等。
import random
varhumanclasses = [1, 2, 3]
aasimarclasses = [5, 6, 7]
def get_classes_from_race(race: str):
classes_s = race.lower().replace(" ", "") + "classes"
if classes_s in globals():
f = globals()[classes_s]
else:
raise ValueError(f"{classes_s} not found")
if not isinstance(f, list):
raise ValueError(f"{classes_s} is not declared as a function")
return f
print(random.choice(get_classes_from_race("Var Human")))
print(random.choice(get_classes_from_race("Aasimar")))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.