Python 如何完成标准并保持其紧凑性?

Python 如何完成标准并保持其紧凑性?,python,Python,这是我的代码,我已经工作了一段时间了。 我正在尝试使用骰子组合上的数字来确定游戏角色的某些特征,就像在DnD风格的游戏中一样。通过掷一个12边和4边的骰子,然后将结果除以,然后将其添加到10的基本属性中,以获得改进的属性,然后假设我将四舍五入到一个不带小数的整数;然后将此信息保存到外部文档中 正如你所看到的,我真的很坏。我希望有一段紧凑的代码,所以我希望能够获得两个字符的统计信息,而不必加倍我的代码,有人能给一些技巧来做到这一点吗?这两个角色的名字应该是史蒂夫和珍妮 import random

这是我的代码,我已经工作了一段时间了。 我正在尝试使用骰子组合上的数字来确定游戏角色的某些特征,就像在DnD风格的游戏中一样。通过掷一个12边和4边的骰子,然后将结果除以,然后将其添加到10的基本属性中,以获得改进的属性,然后假设我将四舍五入到一个不带小数的整数;然后将此信息保存到外部文档中

正如你所看到的,我真的很坏。我希望有一段紧凑的代码,所以我希望能够获得两个字符的统计信息,而不必加倍我的代码,有人能给一些技巧来做到这一点吗?这两个角色的名字应该是史蒂夫和珍妮

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。我还说我需要将数字舍入到最接近的整数,在代码中如何做到这一点?