Python 如何完成标准并保持其紧凑性?
这是我的代码,我已经工作了一段时间了。 我正在尝试使用骰子组合上的数字来确定游戏角色的某些特征,就像在DnD风格的游戏中一样。通过掷一个12边和4边的骰子,然后将结果除以,然后将其添加到10的基本属性中,以获得改进的属性,然后假设我将四舍五入到一个不带小数的整数;然后将此信息保存到外部文档中 正如你所看到的,我真的很坏。我希望有一段紧凑的代码,所以我希望能够获得两个字符的统计信息,而不必加倍我的代码,有人能给一些技巧来做到这一点吗?这两个角色的名字应该是史蒂夫和珍妮Python 如何完成标准并保持其紧凑性?,python,Python,这是我的代码,我已经工作了一段时间了。 我正在尝试使用骰子组合上的数字来确定游戏角色的某些特征,就像在DnD风格的游戏中一样。通过掷一个12边和4边的骰子,然后将结果除以,然后将其添加到10的基本属性中,以获得改进的属性,然后假设我将四舍五入到一个不带小数的整数;然后将此信息保存到外部文档中 正如你所看到的,我真的很坏。我希望有一段紧凑的代码,所以我希望能够获得两个字符的统计信息,而不必加倍我的代码,有人能给一些技巧来做到这一点吗?这两个角色的名字应该是史蒂夫和珍妮 import random
import random
import time
character1 = ("Steve")
character2 = ("Jenny")
y = 0
while y <3:
x = 0
y += 1
numlist = []
while x <5:
x += 1
four = random.randint (1,4)
twelve = random.randint (1,12)
newint = 10 + twelve /four
numlist.append (newint)
strength = numlist[0]
skill = numlist[1]
health = numlist[2]
dexterity = numlist[3]
round (strength, 10)
round (skill, 10)
round (health, 10)
round (dexterity, 10)
print (strength)
print (skill)
print (health)
print (dexterity)
strength = str(strength)
skill = str(skill)
health = str(health)
dexterity = str(dexterity)
doc = open ("character1", "w")
doc.write ("Strength is ")
doc.write (strength )
doc.write (", ")
doc.write ("Skill is ")
doc.write (skill )
doc.write (", ")
doc.write ("Health is ")
doc.write (health )
doc.write (", ")
doc.write ("Dexterity is ")
doc.write (dexterity )
doc.write (".")
doc.close()
这是我的版本,与naiad类似:
import random
def roll():
return 10 + int(random.randint(1, 12) / random.randint(1, 4))
def newCharacter(name):
character = dict(name = name, strength = roll(), skill = roll(), health = roll(), dexterity = roll())
print character
return character
def saveCharacter(filename, character):
with open(filename, "w") as doc:
doc.write("Strength is %d, " % character["strength"])
doc.write("Skill is %d, " % character["skill"])
doc.write("Health is %d, " % character["health"])
doc.write("Dexterity is %d." % character["dexterity"])
saveCharacter("character1.txt", newCharacter("Steve"))
saveCharacter("character2.txt", newCharacter("Jenny"))
进一步阅读:
Python中的函数和返回语句:
通过%运算符格式化字符串:
请随意使用任何其他字符串格式技术,如abc+strnumber或abc{0}.formatnumber
读取和写入文件:
字典:
如果需要进一步改进,我将使用:
import random
class Character(object):
def __init__(self, name):
self.name = name
self.stats = {'strength': 0,
'dexterity': 0,
'health': 0,
'skill': 0,
}
@staticmethod
def roll():
return int(10 + random.randint(1, 12) / random.randint(1, 4))
def generate_stats(self):
for stat in self.stats:
self.stats[stat] = self.roll()
def export_stats(self):
with open(self.name + '.txt', 'w') as output:
for stat in self.stats:
output.write('{0}: {1}\n'.format(stat, self.stats[stat]))
for name in ('Steve', 'Jenny'):
character = Character(name)
character.generate_stats()
character.export_stats()
写一些函数怎么样?圆强度,10不起任何作用。Try-strength=roundstrength,10。还有,你的whiley循环应该做什么?。。。第一个while循环现在对你的问题本身很好奇:也许你应该编辑你的问题,只关注一个特征。解释确定该特性的规则。让我们看看你是如何解决这个问题的。这会降低分散注意力的噪音。并允许我们提供-和辩论-各种选择。你的代码做你想要的一切吗?我需要一个.txt的输出,这将如何做到?{'dextrity':12.75,'skill':13.0,'strength':10.5,'health':12.5,'name':'Steve'}{'dextrity':12.25,'skill':11.0,'strength':19.0,'health':11.0,'name':'Jenny'}的输出也相当混乱,有没有办法将不同的属性分隔到不同的行吗?@Silver:所以您只需要一个包含{…}{…}的txt文件输出事实上,没有新行等?如果需要新字符,我需要代码自身重复,并将新字符的新统计信息保存在新文档中。我希望文件能像力量是,技能是,健康是,灵巧是一样保存,没有{}@Silver:这已经完成了。文件名为character1/2,没有结尾-与您在示例中所做的完全相同。只需调用saveCharacter1.txt,character1就会得到一个txt。我还说我需要将数字舍入到最接近的整数,在代码中如何做到这一点?