循环之for + range
list1 = [0, 1, 2, 3, 4]
for i in list1:
print(i) #分别打印0 1 2 3 4
for i in range(5):
print(i) #分别打印0 1 2 3 4
for i in range(1,5):
print(i) #分别打印 1 2 3 4
for i in range(1,8,2):
print(i) #打印1 3 5 7
list2 = ['耳机', '电脑', '电视', '音响', '彩电']
for num,electronics in zip(list1,list2):
print(num,electronics)
#集合打印中文易出现解码问题
#(0, '\xe8\x80\xb3\xe6\x9c\xba')
#(1, '\xe7\x94\xb5\xe8\x84\x91')
#(2, '\xe7\x94\xb5\xe8\xa7\x86')
#(3, '\xe9\x9f\xb3\xe5\x93\x8d')
#(4, '\xe5\xbd\xa9\xe7\x94\xb5')
print(electronics) #分别打印 耳机 电脑 电视 音响 彩电
'''PS:
1.len(list1) != len(list2) 可以正常打印
2. range(start, stop, step)三个参数分别为开始,结束,步长
start默认为0,step默认为1,两者可以省略不写
'''
元组 tuple()
定义:不可变序列,常用于定义常量,用()创建
方法:
in/not in 判断是否存在其中
()/tuple(可迭代属性)用于创建元组
min/max获取最小/大值
len获取长度
del删除元组
+进行元组拼接
[start, stop, step] 元组切片,含start不含stop,start默认为0,step默认为1
item1 = () #type: <type 'tuple'>
item2 = (10) #type: <type 'int'>
item3 = (10,) #type: <type 'tuple'>
item4 = 10,20 #type: <type 'tuple'>
item5,item6 = 10,20 #item5 10 item6 20 元组拆包
item7,*item8 = 10,20 #元组拆包 *类比js...
'''PS:
1.tuple看逗号,重点不在括号
2.空元组时用()代表即可,但如果是长度为1的元组,则一定要有逗号用于结尾
3.元组切片不影响原有元组数值
'''
字典disc{}
定义:可变容器模型同称映射mapping,可存储任意类型数据,格式:key:value
规则:字典中的key为唯一值,value不限,若key不唯一不报错,但只会取最后一个值作为相应的value覆盖掉之前的value值
key in disc 判断key是否在disc中
update()连接多个disc
items()返回(键, 值) 元组数组
copy()浅复制
values()返回迭代器用list()转换列表
keys()返回迭代器 用 list()转换成列表
clear()清空字典
str()将字典转换成字符串
#创建字典
disc1 = disc({name:'小天'})
disc2 = {name:'小雨'}
disc3 = disc([('name','小辉')])
#删除字典
del disc2 #删除整个字典
del disc2[name] #删除disc2中的键name
disc2.clear() #清空disc2
pop(key[,default])
'''删除字典给定键 key 所对应的值,返回值为被删除的值。
key值必须给出。 否则,返回default值'''
popitem() #删除disc最后一项 当disc为空时,报错
#改字典
disc2[name] = '大雨'
setdefault(key,default=None)
'''若disc中含有key则获取,若没有则新建并赋值default'''
#查字典
age1 = disc2[age]
'''报错,[]只能查找disc中已有的key,当查找的key不存在于当前的disc中是会
报错'''
age2 = disc2.get('age')
'''输出None,get可以随意查找disc中的key,且当key值不存在于当前的disc中
时,不会报错,会返回None,因为get方法的默认返回值为None
'''
练习:
1.给 用户9次机会 猜1 - 10 个数字随机来猜数字。如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误。最终结果要求用户怎么也猜不对
#每个人有9次机会
for j in range(9):
#猜测1-10,并且在用户猜到的数字与随机数字不同时,进行提示
person = int(input('请在1-10中随机猜数字'))
for i in range(1,11):
if i != person:
frequency = str(8 - j)
print('猜测错误,还剩余'+frequency+'次机会')
break
else:
print('您的次数已用光') ```
#### 2.现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中
```Python
#随机从三个办公室
import random
#现有三个办公室 office1 office2 office3
officeDisc =[[],[],[]]
for i in range(1, 9):
officenum = random.randint(1,3)
officeDisc[officenum-1].append(i)
print(officeDisc)
3.现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中,且每个教室中都要至少有1人
import random
officeDisc =[[],[],[]]
#一共有八名教师range(1,9)
for i in range(1,9):
officenum = random.randint(1,3)#随机三个班级
if i>=7:#要求每班至少一人,那么至少要剩余两人进行人员平均分配
for (teacherlist,j) in zip(officeDisc,range(3)):
#如果一个班级的长度为0,则推入老师
if len(teacherlist)<1:
officeDisc[j].append(i)
break
else:
officeDisc[officenum-1].append(i)
else:
officeDisc[officenum-1].append(i)
print(officeDisc)