'''
for 迭代循环 计数循环
'''
# for i in 'PYTHON':
# print(1)
# print(dir([1,2,3])) # 有__iter__()方法证明列表是可迭代对象
# print(dir(123)) # 可以判断数值类型不是可迭代的,所以需要使用range()方法
'''
range() 范围函数
range(起始值,结束值,步长) 左闭右开
'''
# for i in range(2,11):
# print(i)
# 实现for循环写出0-100的奇数
# for i in range(0,101):
# if i%2 != 0:
# print(i)
'''
list [元素,元素]
可变数据类型,可以增删改查
'''
# list1 = ['狮子','长颈鹿','老虎','大象','鸵鸟']
# print(list1[0:2]) # 打印['狮子', '长颈鹿']
# print(list1[:2]) # 默认从0开始切片取值,打印
# print(list1[0::2]) # 默认结束值为4的切片取值,打印['狮子', '老虎', '鸵鸟']
# # 列表推导式取出0-9的奇数
# list1 = [i for i in range(0,9) if i%2 != 0 ]
# print(list1)
'''
元组 tuple 需要在元素后加,
'''
# tu = (5)
# print(type(tu)) # 打印<class 'int'>
# tu = (5,)
# print(type(tu)) # 打印<class 'tuple'>
'''
用for循环打印九九乘法表:
外层循环决定行
内层循环决定列
'''
# for i in range(1,10):
# for j in range(1,i+1):
# print('{}*{}={}'.format(i,j,i*j),end='\t')
# print()
'''
一个列表中有重复元素,编写程序,移除重复元素[1,1,5,5,7,5,3,3,9]->[1,5,7,3,9]
for循环 count()统计元素出现的次数
去除重复的元素:统计次数中大于1的就是重复的元素
'''
# list1 = [1,1,5,5,7,5,3,3,9]
# for i in list1.copy(): # copy()复制列表,以复制的列表修改原列表(复制的列表不随修改而改变)
# if list1.count(i)>1:
# list1.remove(i)
# print(list1)
'''
深浅复制:
在嵌套列表里面,被嵌套的列表没有进行复制,使用的还是同一个id
复制嵌套列表时要用深复制,否则数据会被污染
'''
# li = [5,6,7]
# li2 = li.copy()
# print(id(li))
# print(id(li2))
# lis = [5,6,7,[8,9]]
# lis2 = lis.copy() # 浅复制
# print(id(lis)) # 2522501284744
# print(id(lis2)) # 2522501333128
# print(lis[3])
# lis[3][0] = 11
# print(lis) # 打印[5, 6, 7, [11, 9]]
# print(lis2) # 打印[5, 6, 7, [11, 9]]
# print(id(lis)) # 2115316482952
# print(id(lis2)) # 2115316531272
# print(id(lis[3])) # 2522501333064
# print(id(lis2[3])) # 2522501333064
# import copy # 深复制模块
# lis = [5,7,8,[10,11]]
# lis1 = copy.deepcopy(lis) # 通过调用copy模块中的deepcopy()深复制lis
# print(lis1) # [5, 7, 8, [10, 11]]
# lis1[3][0] = 999
# print(lis1) # [5, 7, 8, [999, 11]]
# print(lis) # [5, 7, 8, [10, 11]]
# print(id(lis[3])) # 2352025152776
# print(id(lis1[3])) # 2352025260872
'''
序列类型:元组、列表、字符串,可以索引取值
散列类型:字典、集合,唯一性,没有下标取值
'''
'''
身份运算符:is,对于Python3来说,常用的数据(-5~256区间)会保存
成员运算符:in,序列类型可以用成员运算符
'''
# li = [5,7,9]
# print(5 in li) # True
# a = 100
# b = 100
# print(a is b) # True
# a = 100000000
# b = 100000000
# print(a is b) # True
'''
找出两个列表中相同元素,并打印出来
可通过集合的交集来做,set():转集合,list():转列表
'''
# li1 = [5,7,8,9,10,12]
# li2 = [7,8,5,1,2,3,4]
# s1 = set(li1)
# s2 = set(li2)
# li = list(s1&s2)
# print(li)
'''
统计一串字符中,每个字母a~z的出现频率,忽略大小写
思路:
每个字母 for循环
count()
全部转大写:upper();全部转小写:lower()
因为字典具有唯一性,所以用字典保存
'''
# dic = {} # 创建一个字典
# num = 0
# while True:
# str = input('请输入一串字符:')
# str = str.lower() # 全转化成小写
# n = len(str)
# if str == 'q':
# break
# else:
# for i in str:
# m = str.count(i)
# dic[i] = m/n
# print(dic)
'''
利用26个字母和10个数字,随机生成10个8位密码
'''
# import random
# str = 'abcdefghijklmnopqrstuvwxyz0123456789'
# for i in range(10):
# pwd = random.choices(str,k=8) # 从字符串里任取8个
# print(''.join(pwd))
# or
# import random
# li = []
# for zimu in range(97,123):
# li.append(chr(zimu))
# for shuzi in range(10):
# li.append(str(shuzi)) # 将每个数值转换成字符串
# for i in range(10):
# pwd = random.choices(li,k=8) # 从列表里任取8个
# print(''.join(pwd))
# or
# import string
# import random
# # print(string.ascii_lowercase) # 打印abcdefghijklmnopqrstuvwxyz
# # print(string.ascii_uppercase) # 打印ABCDEFGHIJKLMNOPQRSTUVWXYZ
# # print(string.ascii_letters) # 打印abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
# li=[]
# zimu = string.ascii_lowercase
# shuzi = [str(i) for i in range(10)] # 将每个数值转换成字符串
# zimu = list(zimu)
# lis1 = shuzi+zimu
# for i in range(10):
# lis = random.choices(lis1,k=8)
# lis = ''.join(lis)
# li.append(lis)
# print(li)
'''
判断用户输入的是不是一个手机号码?
判断长度、是不是数字、是不是1开头
'''
# while True:
# num = input("请输入一串电话号码:")
# if len(num) == 11 and num.isdigit() and num[0] == '1':
# print("这是一个电话号码")
# else:
# print("这不是一个电话号码")
文章到这里就结束了!希望大家能多多支持Python(系列)!六个月带大家学会Python,私聊我,可以问关于本文章的问题!以后每天都会发布新的文章,喜欢的点点关注!一个陪伴你学习Python的新青年!不管多忙都会更新下去!一起加油!