0602知识点整理#2-2(Python-5)
Posted kexinwang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0602知识点整理#2-2(Python-5)相关的知识,希望对你有一定的参考价值。
列表生成
定义:额可以简写循环代码。例如1:
result = [ i+1 for i in range(1,20)] print(result)
===》拆分成以下
result = [] for i in range(1,20): result2.append(i+1) print(result)
执行顺序
例如2:先循环,然后执行条件判断(循环后面可以加条件),最后执行操作,最后返回到list中
*str(i).zfill(2)字符串位数补零操作
result = [ str(i).zfill(2) for i in range(1,20) if i<8 ] print(result) ------- result2 = [] for i in range(1,10): if i<8: j = str(i).zfill(2) result2.append(j) print(result2)
三元表达式
sex = ‘女‘ if int(id_card[-2])%2 == 0 else ‘男‘ #三元表达式 print(sex)
===》if 条件满足为前面的值,否则是后面的值,可以转换为以下:
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())
random.sample
import random print(random.sample(‘0123456789‘,6))#随机取6个,返回的是一个list
将random.sample输出的list转成字符串
random_list = random.sample(‘0123456789‘,6) print(random_list) print(‘‘.join(random_list))
random常量的使用
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))#随机小数
random操作
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改变,没有返回值
举个例子:产生一批用户名,长度在6-12之间,产生这一批用户名不能重复,用户名需要以字母开头,必须包含字母和数字
分析
#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)
以上是关于0602知识点整理#2-2(Python-5)的主要内容,如果未能解决你的问题,请参考以下文章