首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向绝对初学者的Python编程:第5章挑战#2

面向绝对初学者的Python编程:第5章挑战#2
EN

Stack Overflow用户
提问于 2011-01-31 05:59:39
回答 4查看 4.2K关注 0票数 2

我刚刚完成了这篇文章的练习,我想知道是否可以使用相同的技术(字典,if语句等)更有效地完成这项工作。这似乎是低效的编码。

挑战如下:为角色扮演游戏编写一个角色创建器程序。玩家应该得到一个30分的池,用于四个属性:力量,健康,智慧和灵巧。玩家应该能够在任何属性上花费池中的点数,也应该能够从属性中获取点数并将其放回池中。

链接:http://pastebin.com/PeLLz83e

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-31 06:06:23

你可以轻松改进的一件事是,“如果”的第一个系列:

代码语言:javascript
复制
if pts2 == "1":
    skills["Strength"] += pts
    points -= pts
...

通过使用字典skills_dict = {"1": "Strength", "2": "Health", ... },您可以执行以下操作:

代码语言:javascript
复制
skills[skills_dict[pts2]] += pts
points -= pts

第二组“if”也是如此

票数 3
EN

Stack Overflow用户

发布于 2011-01-31 06:06:58

好吧,你的代码看起来不优雅的一个方面是有很多非常相似的序列,特别是:

代码语言:javascript
复制
if rmv2 == "3":
           if rmv < skills["Dextarity"]:
               skills["Dextarity"] -= rmv
               points += rmv
           else:
               print("No")

其中,唯一变化的是输入是什么,修改了什么stat,以及您是在添加还是删除一个值。如果你能找到一种方法把它变成一个可重用的组件,比如使用函数,你可以让你的代码看起来更好一些。

票数 0
EN

Stack Overflow用户

发布于 2011-01-31 06:56:12

一些评论:

代码语言:javascript
复制
points=int(30)

30已经是一个整型数。更改为

代码语言:javascript
复制
points=30

也是

代码语言:javascript
复制
while player != "e":

可能应该是:

代码语言:javascript
复制
while selection != "exit"

我将这个程序拆分成多个小函数,并为角色创建一个类来存储技能和剩余的点数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4845819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档