小编Jon*_*anb的帖子

Python生成Python

我有一组对象,我正在创建一个类,我想将每个对象存储为自己的文本文件.我真的想将它存储为Python类定义,它定义了我正在创建的主类.所以,我做了一些讨论,并在effbot.org上找到了一个Python代码生成器.我做了一些实验,这就是我想出来的:

#
# a Python code generator backend
#
# fredrik lundh, march 1998
#
# fredrik@pythonware.com
# http://www.pythonware.com
#
# Code taken from http://effbot.org/zone/python-code-generator.htm

import sys, string

class CodeGeneratorBackend:

    def begin(self, tab="\t"):
        self.code = []
        self.tab = tab
        self.level = 0

    def end(self):
        return string.join(self.code, "")

    def write(self, string):
        self.code.append(self.tab * self.level + string)

    def indent(self):
        self.level = self.level + 1

    def dedent(self):
        if self.level == 0:
            raise SyntaxError, "internal error in code generator"
        self.level = self.level - 1 …
Run Code Online (Sandbox Code Playgroud)

python code-generation

16
推荐指数
3
解决办法
2万
查看次数

在六边形网格上找到相邻的邻居

编辑:在代码块中包装示例映射,以便格式正确.

好吧,我正在尝试在六边形网格上编写一个非常简单的A*算法.我明白了,可以做A*部分.事实上,我的A*适用于方格网格.我无法包裹我的大脑是找到六边形的邻居.这是海格网格的布局

0101     0301
    0201      0401
0102     0302
    0202      0402
Run Code Online (Sandbox Code Playgroud)

等等

所以,我需要帮助的是编写一个Hexagon类,给定它的十六进制坐标,可以生成一个邻居列表.它需要能够生成会从网格中"掉落"的邻居(如20x20网格中的0000或2101),因为这就是我的A*轨道并排放置在多个地图上的方式.所以可以使用这段代码片段:

planet = Hex('0214')print(planet.neighbors())['Hex 0213','Hex 0215','Hex 0115','Hex 0315','Hex 0116','Hex 0316']

python grid tiles hexagonal-tiles

10
推荐指数
1
解决办法
5920
查看次数

Python包?

好吧,我认为无论我做错了什么,它可能都是显而易见的,但我无法弄清楚.我已阅读并重新阅读有关软件包的教程部分,我唯一可以想到的是,这不起作用,因为我正在直接执行它.这是目录设置:

eulerproject/
  __init__.py
  euler1.py
  euler2.py
  ...
  eulern.py
  tests/
    __init__.py
    testeulern.py
Run Code Online (Sandbox Code Playgroud)

以下是testeuler12.py(我编写的第一个测试模块)的内容:

import unittest
from .. import euler12

class Euler12UnitTests(unittest.TestCase):


    def testtriangle(self):
        """
        Ensure that the triangle number generator returns the first 10
        triangle numbers.

        """
        self.seq = [1,3,6,10,15,21,28,36,45,55]
        self.generator = euler12.trianglegenerator()
        self.results = []
        while len(self.results) != 10:
            self.results.append(self.generator.next())
        self.assertEqual(self.seq, self.results)

    def testdivisors(self):
        """
        Ensure that the divisors function can properly factor the number 28.

        """
        self.number = 28
        self.answer = [1,2,4,7,14,28]
        self.assertEqual(self.answer, euler12.divisors(self.number))


if __name__ == '__main__':

    unittest.main()
Run Code Online (Sandbox Code Playgroud)

现在,当我从IDLE和目录中的命令行执行此操作时,我收到以下错误: …

python unit-testing packages

9
推荐指数
2
解决办法
3031
查看次数