Python嵌套循环以识别文本字符串中的字符

时间:2016-02-11 04:06:20

标签: python

我有一串文字如下:

1x2xx1x2xx1x2xx1x2xxx

我需要拆开文本字符串,如果它是一个数字,我想将该数字与一些其他变量一起传递给另一个函数,以在画布上打印方块。

我写了以下代码:

def process_single_line(a_canvas, line_of_pattern, left, top, size):
    x = left
    y = top

    for char in line_of_pattern:
        if char.isdigit():
            type_of_tile = int(char)
            draw_tile (a_canvas, type_of_tile, x, y, size)
        else:
            x += size

我遇到的问题是:

  1. 它似乎不起作用,draw_tile的矩形和形状 应该打印不显示(但draw_tile功能 工作正常,因为它被多次引用 在它打印的程序中完美无缺)
  2. 在循环结束时,我想将y值增加y + = size as 那么,当NEXT字符串的文本传递时 功能它移动到NEXT网格线。
  3. 预期结果: enter image description here

    我得到什么vs我想要得到的东西:

    enter image description here

2 个答案:

答案 0 :(得分:2)

我相信你应该在渲染后总是递增x位置。

试试这个:

def process_single_line(a_canvas, line_of_pattern, left, top, size):
    x = left
    y = top

    for char in line_of_pattern:
        if char.isdigit():
            type_of_tile = int(char)
            draw_tile (a_canvas, type_of_tile, x, y, size)

        x += size

答案 1 :(得分:2)

多行解决方案(如果您没有)

def process_single_line(a_canvas, line_of_pattern, left, top, size):
    x = left
    y = top

    for char in line_of_pattern:
        if char.isdigit():
            type_of_tile = int(char)
            draw_tile(a_canvas, type_of_tile, x, y, size)

        x += size


lines = ['1x2xx1x2xx1x2xx1x2xxx', '3xxxx3xxxx3xxxx3xxxx']
for line_num, line in enumerate(lines):
    process_single_line(canvas, line, 0, size*line_num, size)