zoukankan      html  css  js  c++  java
  • 列表操作,字符图网格

    逗号代码
    假定有下面这样的列表:
    spam=['apples','bananas','tofu',' cats']
    编写一个函数,它以一个列表值作为参数,返回一个字符串。该字符串包含所有表项,表项之间以逗号和空格分隔,并在最后一个表项之前插入 and 。例如,将前面的spam列表传递给函数,将返回'apples,bananas,tofu,and cats'。但是你的函数应该能够传递给它的任何列表。

    someList = []
    
    def a(someList):
        for i in range(0, len(someList)):
            if i != len(someList)-1:
                print(someList[i], end=',')
            else:
                print('and ' + someList[len(someList)-1])
    
    spam = ['apple', 'banana', 'tofu', 'cats']
    a(spam)

    字符图网格
    假定有一个列表的列表,内层列表的每个值都是包含一个字符的字符串,像这样:

    grid = [ ['.', '.', '.', '.', '.','.'],
             ['.', '0', '0', '.', '.','.'],
             ['0', '0', '0', '0', '.','.'],
             ['0', '0', '0', '0', '0','.'],
             ['.', '0', '0', '0', '0','0'],
             ['0', '0', '0', '0', '0','.'],
             ['0', '0', '0', '0', '.','.'],
             ['.', '0', '0', '.', '.','.'],
             ['.', '.', '.', '.', '.','.']]
    
    你可以认为grid[x][y]是一幅“图”在x,y坐标处的字符,该图由文本字符组成。原点(0,0)在左上角,向右x坐标增加,向下y坐标增加。

    复制前面的网格值,编写代码用它打印图像。

    ..OO.OO..
    .OOOOOOO.
    .OOOOOOO.
    ..OOOOO..
    ...OOO...
    ....O....

    提示:你需要使用循环嵌套循环,打印出grid[0][0],然后grid[1][0],然后grid[2][1],以此类推,知道grid[8][0]。这就完成第一行,所以接下来打印换行。然后程序将打印出grid[0][1],然后grid[1][1],然后grid[2][1],以此类推。程序最后将打印出grid[8][5]。
    而且,如果你不希望在每次print()调用后都自动打印换行,记得向print()传递end关键字参数。

    import copy
    
    grid = [['.', '.', '.', '.', '.', '.'],
            ['.', '0', '0', '.', '.', '.'],
            ['0', '0', '0', '0', '.', '.'],
            ['0', '0', '0', '0', '0', '.'],
            ['.', '0', '0', '0', '0', '0'],
            ['0', '0', '0', '0', '0', '.'],
            ['0', '0', '0', '0', '.', '.'],
            ['.', '0', '0', '.', '.', '.'],
            ['.', '.', '.', '.', '.', '.']]
    gridNew = copy.deepcopy(grid)
    for j in range(0, 6):
        for i in range(0, 9):
            if i < 8:
                print(gridNew[i][j], end="")
            else:
                print(gridNew[i][j])

    ==============

    1. 思考了一下,如果不写死数值,写成根据grid的长度、grid内每个列表的长度来定义range

    2. 以及,若grid内的列表不是规则的同长度,打印就会报错,于是

    import copy
    
    grid = [['.', '.', '.', '.', '.', '.'],
            ['.', '0', '0', '.', '.', '.'],
            ['0', '0', '0', '0', '.', '.'],
            ['0', '0', '0', '0', '0', '.'],
            ['.', '0', '0', '0', '0', '.'],
            ['0', '0', '0', '0', '0', '.'],
            ['0', '0', '0', '0', '.', '.'],
            ['.', '0', '0', '.', '.', '.'],
            ['.', '.', '.', '.', '.', '.']]
    gridNew = copy.deepcopy(grid)
    lens = []
    for spa in gridNew:
        lens.append(len(spa))
    
    for j in range(0, max(lens)):
        for i in range(0, len(gridNew)):
            try:
                if i < len(gridNew)-1:
                    print(gridNew[i][j], end="")
                else:
                    print(gridNew[i][j])
            except:
                continue

    3. i的取值与grid内列表数量一致,可以用len(gridNew)来自动适配列表

    4. j的取值就有点复杂,首先要确定grid列表内每个列表的长度

    其次将每个列表长度放入一个空列表内

    再求出列表长度最大的数值

    5. 在取值过程中,可能存在i或j娶不到的情况,此时会报错,用except:continue来跳过继续取下一个值

  • 相关阅读:
    前端的一些雕虫小技,从100%和滚动条说起
    这事没完,继续聊spring cloud stream和kafka的这些小事
    简单聊一聊spring cloud stream和kafka的那点事
    是谁,在敲打我窗-CSS雨滴动画效果
    对照谈-官方spring-boot-starter和自定义starter异同分析
    从spring boot发邮件聊到开发的友好性
    抖音抖一抖-SVG和CSS视觉故障艺术小赏
    上位机组态控件PCHMI-PLC地址命名规则
    【C#格式化字符】【C#Chart图表控件】【饼图、柱形图、波形图】
    【PCHMI.DLL】【C#上位机二次开发文档】2021年7月15更新
  • 原文地址:https://www.cnblogs.com/p36606jp/p/15113942.html
Copyright © 2011-2022 走看看