0602知识点整理#2-2(Python-5)
2020-12-13 02:08
标签:字典 oat alc 传值 条件 username 开头 cas mile 定义:额可以简写循环代码。例如1: ===》拆分成以下 执行顺序 例如2:先循环,然后执行条件判断(循环后面可以加条件),最后执行操作,最后返回到list中 *str(i).zfill(2)字符串位数补零操作 ===》if 条件满足为前面的值,否则是后面的值,可以转换为以下: 定义:一种数据类型,集合天生可以去重,集合是无序 集合的操作 集合的交集、并集、差集、对称差集(可以多个集合取交集) 定义函数: 形参、实参 举例:判断输入的数据是否是一个小数 解析: 如何判断是否需要返回值--看需求,确定函数是否需要加返回值(如读文件),如下: 返回值返回元组 默认值参数 函数举例读取文件/字典 random.sample 将random.sample输出的list转成字符串 random常量的使用 random操作 举个例子:产生一批用户名,长度在6-12之间,产生这一批用户名不能重复,用户名需要以字母开头,必须包含字母和数字 0602知识点整理#2-2(Python-5) 标签:字典 oat alc 传值 条件 username 开头 cas mile 原文地址:https://www.cnblogs.com/kexinwang/p/11022399.html列表生成
result = [ i+1 for i in range(1,20)]
print(result)
result = []
for i in range(1,20):
result2.append(i+1)
print(result)
result = [ str(i).zfill(2) for i in range(1,20) if i ]
print(result)
-------
result2 = []
for i in range(1,10):
if i:
j = str(i).zfill(2)
result2.append(j)
print(result2)
三元表达式
sex = ‘女‘ if int(id_card[-2])%2 == 0 else ‘男‘ #三元表达式
print(sex)
id_card = ‘410881199211111141‘
if int(id_card[-2]) % 2 == 0:
sex = ‘女‘
else:
sex = ‘男‘
print(sex)
集合
l = [1,1,2,3,4,3]
print(set(l)) #集合是无序
s2= {1,2,3,4}
s = set() #空集合
s.add(1) #添加元素
s.remove(1) #删除元素
print(s2)
xn = [‘jiajinju‘,‘yangliangliang‘,‘zhaowenjing‘,‘shenxianlu‘]
zdh = [‘jiajinju‘,‘yangliangliang‘,‘zhaowenjing‘,‘hanmin‘,‘liuzhao‘]
xn_set = set(xn)
zdh_set = set(zdh)
print(xn_set.intersection(zdh_set)) #取交集
print(xn_set & zdh_set )#取交集
print(xn_set.union(zdh_set)) #并集 #把俩集合加一起,重复的去除
print(xn_set |zdh_set )#并集
print(xn_set.difference(zdh_set)) #差集,在a集合里面有,在b集合里面没有的
print(xn_set - zdh_set) #差集
print(xn_set.symmetric_difference(zdh_set)) #对称差集,把两个集合里面都有的去除
print(xn_set ^ zdh_set ) #对称差集
函数
def smile():
print(‘哈哈哈‘)
smile()#调用函数,函数必须调用才会执行
#一个函数只实现一个功能,不要写太长的在一个函数里面def is_float(s): #形式参数s,变量
pass
is_float(1) #实际参数1
#1.54
#1、只有一个小数点
#2、小数点左右是整数
-------------------------
#-1.34
#1、只有一个小数点
#2、小数点右边是整数,小数点左边只有一个负号
#负号后面是一个整数price = input(‘请输入价格:‘)
def is_float(s): #形式参数
s = str(s)
if s.count(‘.‘) == 1:
left,right = s.split(‘.‘) #1.74 [‘1‘,‘74‘],用.分割成left字符串和right字符串
if left.isdigit() and right.isdigit():#left和right均为数字
return True
elif left.startswith(‘-‘) and left[1:].isdigit() and right.isdigit():#left由‘-’开始,且left和right均为数字
return True
return False
函数返回值
def calc(a,b):
result = a+b
print(result)
return result#函数返回值
sum = calc(1,1)
print(‘sum‘,sum)
def write_file(file_name,content):#写文件
with open(file_name,‘w‘,encoding=‘utf-8‘) as fw:
fw.write(content)
#在函数里面定义的变量都是局部变量
#函数里只要遇到return函数立即结束def read_file(file_name):#读文件
with open(file_name,encoding=‘utf-8‘) as fw:
result = fw.read()
return result
username = input(‘username:‘)
res = read_file(‘users‘)
if username in res:
print(‘用户名存在!‘)
else:
print(‘用户名不存在!‘)
def more():
name = ‘xiaohei‘
age = 18
score = 37.5
return name,age,score#需要与函数中内容数量及项目对应
def register(name,sex=‘女‘):
print(‘[%s %s]写入数据库‘%(name,sex))
register(‘贾金菊‘,‘男‘)#传值男,写入男
register(‘贾金菊‘)#没有传值,默认写入为女
import json
def op_file(file_name,content=None):
if content:#有content
with open(file_name,‘w‘,encoding=‘utf-8‘) as fw:
fw.write(content)
else:#只传文件名,没有content
with open(file_name,encoding=‘utf-8‘) as fr:
return fr.read()
def op_file_json(file_name,dic=None):#字典格式
if dic:
with open(file_name,‘w‘,encoding=‘utf-8‘) as fw:
json.dump(dic,fw)
else:
with open(file_name,encoding=‘utf-8‘) as fr:
result = json.load(fr)
return result
result = op_file(‘users‘)
print(result)
op_file(‘user2.txt‘,xiaoming)
Random模块
import random
#随机产生6为数字
import random
def sms_code():
result = random.randint(1, 999999)
verify_code = str(result).zfill(6)
return verify_code
print(sms_code())
import random
print(random.sample(‘0123456789‘,6))#随机取6个,返回的是一个list
random_list = random.sample(‘0123456789‘,6)
print(random_list)
print(‘‘.join(random_list))
import string
print(string.digits) #所有的整数
print(string.ascii_lowercase)#小写字母
print(string.ascii_uppercase) #大写字母
print(string.ascii_letters)#大写字母+小写字母
print(string.punctuation) #所有的特殊符号
print(random.uniform(1,999999))#随机小数
import string
print(random.choice(string.digits)) #随机取一个值
print(random.uniform(1,999999))#随机小数
l = [1,2,3,4,5,6]
random.shuffle(l) #洗牌
print(l)#list改变,没有返回值
分析
#1、循环,传入的数字是多少,就产生多少条
#2、随机产生一个6-12之间的数字当做长度
#3、不能重复用的,就用集合
#4、判断产生的用户名第一个元素是否不为整数import string
def op_file(file_name,content=None):
if content:
with open(file_name,‘w‘,encoding=‘utf-8‘) as fw:
fw.write(content)
else:
with open(file_name,encoding=‘utf-8‘) as fr:
return fr.read()
def gen_username(num):#产生用户名- 100
all_username = set()#定义空集合
while len(all_username)!= num:
length = random.randint(6,12)
temp = random.sample(string.digits+string.ascii_letters,length)#产生用户名
if set(temp) & set(string.digits) and set(temp) & set(string.ascii_letters) and not temp[0].isdigit():
username = ‘‘.join(temp)
all_username.add(username+‘@163.com‘+‘\n‘)
return all_username
usernames = gen_username(100)
username_str = ‘‘.join(usernames)
op_file(‘usernames.txt‘,username_str)