码迷,mamicode.com
首页 > 编程语言 > 详细

0602知识点整理#2-2(Python-5)

时间:2019-06-15 11:36:49      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:字典   oat   alc   传值   条件   username   开头   cas   mile   

列表生成

定义:额可以简写循环代码。例如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)

标签:字典   oat   alc   传值   条件   username   开头   cas   mile   

原文地址:https://www.cnblogs.com/kexinwang/p/11022399.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!