python基础学习30天——3

"""
list 列表
问题 :定义五个人年龄 最后求出他们的平均年龄
"""
age1=10
age2=18
age3=50
age4=5
age5=30
print((age1+age2+age3+age4+age5)/5)
"""
如果存储1000个年龄求他们的平均年龄:
解决:使用列表
列表本质: 是一种有序的集合

创建列表
格式: 列表名 = [列表选项1, 列表选项2, ..., 列表选项n]
"""
#创建空列表
list1 = []

#创建有元素的列表
#列表中的元素的数据类型可以不同

list2 = [1,2,3,45,4,5,4,"good",True]
"""
列表元素的访问
1.取值:       列表名[下标]
2.替换修改     列表名[下标] = 数值
"""
print(list2[2])

list2[2] = 1000

print(list2)

#注意 下标不要超过列表的界限

#列表的操作
list3 = [1,2,3]
list4 = [4,5,6]
print(list3+list4) #得到的是一个新的列表
#列表重复
print(list4*3)#也是得到一个列表
#in         not in
print(1 in list3)
print(1 not in list3)
#列表截取(切片)
list5 = [1,2,3,4,5,6,7,8,9,4,5,6,2]
print(list5[2:7])
print(list5[2:-1])#-1表示的是最后一个元素的下标。
#二维列表: 列表元素是一维列表 本质:本质就是一维列表 在内存里储存就是列表

"""列表中的方法"""
#append(object)     在列表的末尾加入一个元素
list=[1,2,3,4,5,5,9,7,1,2,3,5]
list.append(6)
#只能在末尾添加一个元素。
# extend(seq)       在列表末尾一次追加多个元素
list.extend([9,8,7,])
#insert(index,obj)         将元素插入列表
list.insert(2,100)
#将元素右移,不会覆盖
#pop(obj=list[-1])      默认删除的是-1
list.pop()#可以写进去下标。
#remove(obj)        移除列表中的某个值的第一个匹配项
list.remove(8)
print(list)

#clear() 清空列表
list.clear()
print(list)

#index()      找出列表中匹配项第一个下标
list6 = [1,2,1,2,3,4,5,6,2,3]
print(list6.index(2))

#len(list)    返回列表中元素的个数

#count()        统计某个元素在列表中出现的次数
print(list6.count(2))
#max()  min()       返回列表中元素的最大值,最小值


#reverse()      倒叙列表中的元素
print((list6.reverse())) #可以改变内容
#sort([func])       排序 默认升序排列
print(list6.sort())
#list(seq)      转为列表   字符串,元组,集合 等。
from  copy import copy,deepcopy
#copy       拷贝
'''
浅拷贝和深拷贝
深浅拷贝的区分在于列表中是否有其他对象列表'''
"""
==:判断的是值
is:判断的是内存地址
"""
a = [1,2,1,[1,2,1]]
b = a
print(a == b)
print(id(a),id(b))
print(a is b)
#浅拷贝:只拷贝表层元素
#copy
b = copy(a)
#深拷贝:在内存中重新创建所有子元素
#deepcopy
c = deepcopy(a)

print(a == b)
print(c == a)
print(a is b)
print(a is c)
print(id(a), id(b), id(c))
print(id(a[3]), id(b[3]), id(c[3]))

"""
tuple 元组
"""
#本质:也是一种有序集合,
#特性:1.与列表非常类似 2.一旦初始化就不能修改 3.使用小括号。

#创建元组: 元组名 = (元组选项1,元组选项2,...,元组选项n)
t1 = ()
#定义带元素的元组 语速类型可以不同
t2 = (1,2,3,"good",True)
print(t2)
#定义含有一个元素的元组的时候要注意加个,
t3 = (1,)
print(t3)

#元组元素的访问

#取值  元组名[下标],不能超过下标,可以使用负数
t4 = (1,2,3,4,5)
print(t4[2])
print(t4[-2])
#修改元组, 我们不能修改其中的元素 但是能修改元素内的列表
t5 = (1,2,3,[1,2,3])
t5[3][1] = 100    #根据下标修改
print(t5)

#元组的操作 和列表的操作基本相同
#元组的组合
#元组的重复
#元组截取(切片)

#元组的方法

#len(tuple) 返回元组的元素个数

#index 查找拿到下标  count

#max(tuple)

#min(tuple)

#tuple(seq)     转为元组


"""
条件控制语句"""
"""
if 语句

if-else 语句

if-elif-else 语句
格式:
if 表达式1:
    语句1
elif 表达式2:
    语句2
....
elif 表达式n:
    语句n
else:
    语句e

逻辑:当程序执行if-elif-else语句时,首先计算表达式1的值,
如果表达式1为真,执行语句1,执行完语句1结束整个语句
向下执行,如果表达式1的值为假,则计算表达式2的值,为真 执行语句2
同上。
如果所有的表达式都为假,则执行else内的语句。
精髓:每一个elif都是对上边所有表达式的否定。
"""
"""
循环语句 while for
"""
"""
while :
格式:
while 表达式:
    语句

逻辑:当程序执行到while语句时,首先计算表达式的值,如果表达式的值为假,则跳过整个while语句
想继续向下执行,如果表达式的值为真,则执行语句,执行完语句在执行表达式的值。,进行循环知道表达式的值为假为止。

"""
#打印十次输出
index = 0
while index < 10:
    print("hello_world")
    index += 1
#求1+2+3。。。+100的和
index = 1
sum=1
while index < 100:
    index += 1
    sum += index
print(sum)
#死循环 表达式永远为真的循环。

"""
while使用else 语句
格式:
while 表达式:
    语句1
else:
    语句2
逻辑:在表达式的值为Flase时,执行else中的语句2.
"""
a = 1
while a < 5:
    print("hello world")
    a += 1
else:
    print("world _ hello")

"""
for 语句

格式:
for 变量 in 集合:
    语句

逻辑:当程序执行到for语句时,按顺序取集合中的每个元素赋值给变量,
再执行语句,循环直到取完集合中的元素为止

"""
for x in [1,2,3,4,5]:
    print("x = %d"%x)


#range([beg=0, ]end[, step]) 列表生成器,beg 开始的数字默认从0开始 end:结束的数字不包含在内,step: 步长 默认为1.
for x in range(1, 6):
    print("x = %d"%x)

sum = 0
for x in range(1, 101):
    sum += x
print("sum = %d"%sum)

#同时遍历下标和元素
for index, x in enumerate([1,2,3,4,5]):
    print(index, x)
#enumerate 返回的是一个元组
#如果变量是一个的话 就得到的是元组 两个就分别得到值
#原理 a, b = (1, 2)

"""
pass语句:
作用: 当语句要求不希望任何命令或代码来执行
说明: pass语句是一个空操作,在执行时没有任何相应。最终会有用的,但是暂时写不出来。
使用在: if语句 while语句 for语句 函数 类 等位置。

break语句
作用:跳出循环
for x in [1,2,3,4,5,6]
    if x == 3:
        break
    print("x = %d"%x)

注意:只能跳出距离最近的循环。 循环语句中的else语句,表达式错误循环导致循环终止时被执行,但循环被break终止时,else不执行
    


continue语句
作用:跳过本次循环语句中的生于语句,然后继续下一次循环
for x in [1,2,3,4,5,6]
    if x == 3:
        continue
    print("x = %d"%x)
    
    
"""
"""
字典:
使用键—值对(key — value)的形式存储数据,具有极快的查找速度

特性:
    1.字典的key必须唯一
    2.key必须是不可变对象 字符串、整数、元组等都是不可变的对象
    但是 列表是可变的,不能作为key
    3.key 一般为字符串

思考 :保存一个学生的基本信息(姓名,性别,年龄,身高,体重。)

解决: 使用字典
"""
#创建字典 存储一个学生的基本信息
#格式 {key1:value1,key2:value2}
stu={"name":"sunck", "age":18, "sex":"男",
     "height": 173.5, "weight": 75}
#元素的访问
#获取     字典名[key]    字典.get[key]
print(stu["name"])#获取的键不存在会报错
print(stu.get("score"))#一般都是用get来获取
#添加
stu["score"] = 89.90
stu["height"] = 180#如果键不存在则增加属性否则覆盖原数据。
#删除
stu.pop("score")#删除指定的项
print(stu)
#遍历
for key in stu:#拿到的是键
    print(stu[key])
for value in stu.values():#拿到的是值
    print(value)
for key, value in stu.items():#拿到的是键和值
    print(key,value)
#字典的是无序的
for index,key in enumerate(stu):#拿到的是元组
    print(index, key)

"""
比较 list 和dict
dict:
    优点:查找和插入的速度极快,而且不会随着key的增多而降低效率
    缺点:需要占用大量的内存,内存浪费过多
list:
    优点:占有内存小,浪费内粗你少
    缺点:查找和插入的时间会随着元素的增加而增加
"""


"""
set:集合
与dict类似,是一组Key的集合(不存储value)
本质:无序和无重复的集合
"""
#创建:需要用一个list或者tuple作为输入集合
#注意:列表中的重复元素会被过滤掉
s1 = set([1,2,3,4,5])
print(s1)
#应用:列表去重
numlist = [1,2,3,4,5,6,7,8,9,7,8,5,6,5,1,2,0,3,1,2]
#numlist = list(set(numlist))
print(numlist)

#添加
#插入list、字符串、元组的每个元素
s2 = set([1,2,3,4,5])
s2.update([7,8,9])
s2.update("hello_world")
s2.update((6,7,8))
#不能直接插入数字
s2.update(range(9))
print(s2)
#删除
s3 = set([1,2,3,4,5])
print(s3.pop())#从左侧开始删除

s3.remove(3)#删除指定元素,如果元素不存在会报KEyError的异常

print(s3)

#遍历
s4 = set([6,5,2,3,1])
for key in s4:
    print(key)#遍历是按照顺序的

for index, key in enumerate(s4):
    print(index,key)#索引没有意义。

#交集和并集
s5 = set([1,2,3,4])
s6 = set([3,4,5,6])
#交集
print(s5 & s6)
#并集
print(s5 | s6)

"""

list 、 tuple 、string-> set #list和tuple中的元素不能存在可变对象
set()
tuple 、 set 、string-> list
list()
list  、 set 、string-> tuple
tuple()
"""
"""
turtle模块绘图
是一个简单的绘图工具
import turtle
提供了一个小海龟,类似一个机器人,能偶听懂一些简单的命令
#绘图窗口的原点(0,0)在正中间,默认向右侧移动
操作命令:
1.运动命令
forward(x) 向前移动, x代表距离
backward(x) 向后移动,x代表距离
right(degree)向右转动degree度
left(degree)向左转动degree度
goto(x,y)   将笔画(小海龟)移动到坐标(x,y)的位置
speed([speed]) 笔画绘制的速度,范围在[0,10]之间的整数

2.笔画控制命令
up() : 让笔画抬起,移动时不绘制图形
down(): 让笔画落下,落下后再移动绘制图像
setheading(degree): 海归的朝向,degree代表角度
reset() :   恢复设置,清空窗口,重置trutle为起始状态
clear():    清空窗口,
pensize(width)      笔画的宽度
begin_fill()        开始填充
fillcolor(color)    绘制图形的填充颜色
end_fill()          结束填充
dot(radius,color)   画点
circle(redius,extent)   绘制一个圆形,redius为半径,extent为次数,画圆就不必写第二个参数。
3.其他命令
undo()  撤销上一个turtle的动作,只撤销一个动作
hideturtle()   隐藏箭头
showturtle()    显示箭头
write(str, font = (font-name, font-size, font-type))
screensize(x,y)     设置屏幕的宽高。   
"""
import turtle
turtle.forward(100)

猜你喜欢

转载自blog.csdn.net/qq_37235798/article/details/81384849
今日推荐