栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python青少年编程《我的抽象画--列表》

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python青少年编程《我的抽象画--列表》

列表知识点

python3常见的数据结构有:数字,字符串,列表,元组(只读列表,不可修改元素),集合,字典。

列表是python最基本的数据结构,如果把变量比作盒子,那么列表就是装在这些变量的盒子。

列表是由一系列按特定顺序排列的元素组成,创建的列表可以包含所有字母,数字0-9,甚至其他列表。列表里的元素之间没有任何关系。一般列表里面包含多个元素,所以我们一般用英文复数命名。创建一个列表:

列表名=[元素1,元素2],用[ ]表示,用逗号分隔其他元素。注意:方括号和逗号都是英文状态下的。

建立列表:students=['Bob','Alice','jim','Mike','Judy']

1.如果我想将将列表打印出来,那么我们可以接着students列表下面一行输入:

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students)
#>>>['Bob', 'Alice', 'Jim', 'Mike', 'Judy']

python将打印列表的内部所有,包括方括号,运行结果如上"#>>>"后面所示。所有代码均可直接复制使用,“#>>>"后面是运行结果,我也已经加了#注释掉了。

2.但是这并不是我想看到的结果,我只想输出里面的元素,所以接下来我们学习下如何访问列表元素。

列表是有序集合,因此访问列表任意元素,只需将该元素的位置(索引)告诉python即可。

3.下面展示如何访问列表元素:

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students[0])
#>>>Bob

列表不是从1开始的,是从0开始的  正数索引

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students[1])
#>>>Alice

列表还可以负数索引,这个对于你不知道列表长度的情况下访问最后的元素非常方便。

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students[-1])
#>>>Judy

我们可以向使用其他变量一样使用列表中的各个值了,例如可以使用f字符串根据列表中的值来创建消息。

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
message=f"My classmate is {students[2].title()}"
print(message)
#>>>My classmate is Jim

切片,不包含结束索引  列表[开始索引:结束索引]

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students[0:2])
#>>>['Bob', 'Alice']

如果没有指定第一个索引,自动从头开始

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students[:3])
#>>>['Bob','Alice','Jim']

遍历整个列表第一种方法

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
for i in students:
    print(i)
#>>> Bob Alice Jim Mike Judy

遍历整个列表第二种方法

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
for i in range(len(students)):
    print(students[i])
#>>> Bob  Alice  Jim  Mike  Judy
 

列表的元素可以是其他元素,可以包含所有字母,数字0-9,布尔值,甚至其他列表

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy',123,True,['a','b']]
for i in students:
    print(i)
#>>>Bob Alice Jim Mike Judy 123 True ['a', 'b']

使用len(students))查看列表元素个数

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(len(students))
#>>>5

应用:我们使用列表来绘制一个彩色五角星,绘制边长为120,且每条边有6种颜色(红黄蓝绿橙紫)的五角星。

import turtle#导入海龟绘图库
color_list = ['red','yellow','blue','green','orange','purple']#建立一个颜色列表
for i in range(5):#五角星有5条边
    for j in range(6):#五角星每一条边
        turtle.pencolor(color_list[j])
        turtle.forward(40)#每一段选一个颜色走40,走6次,所以一条边就是240
    turtle.right(144)#绘制完一条边转另一条边
turtle.done()

列表中增加新元素 使用append,添加到列表末尾。

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
students.append('Jack')
print(students)
#>>>['Bob', 'Alice', 'Jim', 'Mike', 'Judy', 'Jack']

在列表中插入元素,使用insert(索引,内容)

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
students.insert(0,'Jack')
print(students)
#>>>['Jack', 'Bob', 'Alice', 'Jim', 'Mike', 'Judy']

在列表中修改元素,通过索引赋值

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students)
#>>>原列表['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
students[0]='jack'
print(students)
#>>>新列表 ['jack', 'Alice', 'Jim', 'Mike', 'Judy']

删除元素,通过remove,pop,del

remove,不知道索引值,只知道元素。

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students)
#>>>原列表['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
students.remove('Bob')
print(students)
#>>>新列表['Alice', 'Jim', 'Mike', 'Judy']

使用del删除,则必须知道索引值

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students)
#>>>原列表['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
del students[0]
print(students)
#>>>新列表['Alice', 'Jim', 'Mike', 'Judy']

pop删除末尾元素,你要删除元素,并接着使用它的值,例如你可能需要刚刚被射杀的外星人的x坐标和y坐标,以便在相应的位置显示爆炸效果。

students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students)
#>>>原列表['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
students.pop()
print(students)
#>>>新列表['Alice', 'Jim', 'Mike', 'Judy']

应用:我的抽象画

1、(2019蓝桥杯市赛题)下图是著名的“咖啡墙错觉”图片。图中的灰色线看起来不是向左下倾斜就是向右下倾斜,但实际上它们都是水平线且彼此平行的。已知:

  1. 每一个正方形的边长长度为50。
  2. 每一层由13个正方形组成,一共有8层。
  3. 每一层的的左右偏移量是随机的,偏移范围为(-300,-270),层与层之间的高度为50像素,即正方形的高度。
  4. 画笔起始绘制坐标为(x,-200)。

每一层第一个正方形填充为黑色,第二个正方形填充为白色,第3个为黑色,以此类推……

import turtle
import random

turtle.speed(0)
turtle.pencolor('gray')

y = -200  #初始位置

for k in range(8):   #层数
    x = random.randint(-300, -270)  #每一层的x坐标位置是随机的
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()

    for j in range(13):   #每一层的个数

        if j % 2 == 0:
            turtle.fillcolor('black')   #偶数用黑色填充
        else:
            turtle.fillcolor('white')   #奇数用白色填充

        turtle.begin_fill()
        for i in range(4):  #画一个正方形
            turtle.forward(50)
            turtle.left(90)
        turtle.forward(50)
        turtle.end_fill()

    y = y + 50      #每一层y坐标位置增加50像素

turtle.done()

本人3年一线编程讲师经验,分享交流,乐高全系列,Scratch , Python,少儿编程。关注我的个人号发送游戏名称获取对应素材。部分素材仍在整理中,陆续会更新,可将需求发到后台

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740533.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号