我刚刚完成了这篇文章的练习,我想知道是否可以使用相同的技术(字典,if语句等)更有效地完成这项工作。这似乎是低效的编码。
挑战如下:为角色扮演游戏编写一个角色创建器程序。玩家应该得到一个30分的池,用于四个属性:力量,健康,智慧和灵巧。玩家应该能够在任何属性上花费池中的点数,也应该能够从属性中获取点数并将其放回池中。
链接:http://pastebin.com/PeLLz83e
发布于 2011-01-31 06:06:23
你可以轻松改进的一件事是,“如果”的第一个系列:
if pts2 == "1":
skills["Strength"] += pts
points -= pts
...通过使用字典skills_dict = {"1": "Strength", "2": "Health", ... },您可以执行以下操作:
skills[skills_dict[pts2]] += pts
points -= pts第二组“if”也是如此
发布于 2011-01-31 06:06:58
好吧,你的代码看起来不优雅的一个方面是有很多非常相似的序列,特别是:
if rmv2 == "3":
if rmv < skills["Dextarity"]:
skills["Dextarity"] -= rmv
points += rmv
else:
print("No")其中,唯一变化的是输入是什么,修改了什么stat,以及您是在添加还是删除一个值。如果你能找到一种方法把它变成一个可重用的组件,比如使用函数,你可以让你的代码看起来更好一些。
发布于 2011-01-31 06:56:12
一些评论:
points=int(30)30已经是一个整型数。更改为
points=30也是
while player != "e":可能应该是:
while selection != "exit"我将这个程序拆分成多个小函数,并为角色创建一个类来存储技能和剩余的点数。
https://stackoverflow.com/questions/4845819
复制相似问题