Python-循环,元组与字典

循环之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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容