• 列表操作,字符图网格


    逗号代码
    假定有下面这样的列表:
    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来跳过继续取下一个值

  • 相关阅读:
    根据类生成数据库连接
    C# 获取动态类中所有的字段
    mysql 基础配置经验
    CSS小笔记
    jquery知识location.search
    Eclipse 启动tomcat 访问主页报错404
    window下安裝redis服務
    用maven创建web工程
    @WebListener 注解方式实现监听
    Dubbo-admin管理平台的安装
  • 原文地址:https://www.cnblogs.com/p36606jp/p/15113942.html
Copyright © 2020-2023  润新知