python 学习三

2022-10-21,

list循环删除下标会出错
L = [1,1,1,2,3,4,5]#list是根据下标来取值
#下标0,1,2,3,4,5,6 循环后下标错位 输出的结果是【1,2,4】,把1也取到了
#l2 = [1,1,1,2,3,4,5]
l2 = l
for i in l2:#如果L循环的时候回导致下标错位输出结果错误
if i%2!=0:
l.remove(i)#删除列表中的元素
print(l)

浅拷贝与深拷贝

import copy
L =[1,2,3,4,5,6]
L2=L #浅拷贝,就是直接赋值,内存地址不变
L2 = copy.deepcopy(L)#深拷贝,重新赋予新的内存地址
L2 = L.copy()#浅拷贝
print(id(L))
print(id(L2))

非空即真

name = input('请输入名称:').strip()#strip()去空格
#name='abc'
#a=''
#l=[]
#d={}
#t=()
#b=None 什么都没有也是为空
name = int(name)
if name:
print('输入正确')
else:
print('name不能为空')

什么是函数:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

def functionname( parameters ):  #函数代码块以def关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
"函数_文档字符串"#数的第一行语句可以选择性地使用文档字符串—用于存放函数说明函。
function_suite
return [expression] #选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

默认值函数

def my():
pass #什么也不干先占位,如果不写就会报错
def my(a,b): #位置参数,调用时必须填写两个参数
return a def my(name,sex):
#位置参数,必填
#函数体
return name def db_connect(ip,port=3306): #默认值参数
print(ip,port)
db_connect('118.24.3.40',3307)
db_connect('118.24.3.40')

参数

def send_sms(*args): #可变参数
for p in args:
print(p)
send_sms()#不是必传的
send_sms(1213,121,3123) #不限制传的个数,都存在元祖

递归

就是自己调用自己
def test1():
num = int(input('please enter a number:'))
if num%2==0:#判断输入的数字是不是偶数
return True #如果是偶数的话,程序就退出了,返回true
print('不是偶数请重新输入!')
return test1()#如果不是偶数的话继续调用自己,输入值
print(test1())#调用test 最多调用999次
count = 0
def say():
global count
count+=1
print('say')
print(count)
say()
say()

return的作用

def my2():
for i in range(50):
return i
#return 有2个作用
#1、结束函数,只要函数里面遇到return,函数立即结束运行
#2、返回函数处理的结果

小数的类型

判断小数的函数用法
s为字符串
s.isalnum() 所有字符都是数字或者字母
s.isalpha() 所有字符都是字母
s.isdigit() 所有字符都是数字
s.islower() 所有字符都是小写
s.isupper() 所有字符都是大写
s.istitle() 所有单词都是首字母大写,像标题
s.isspace() 所有字符都是空白字符、\t、\n、\r
def check_float(s):
'''
这个函数的作用就是判断传入的字符串是否是合法的小数
:param s: 传入一个字符串
:return: True/false
'''
s = str(s)
if s.count('.')==1:
s_split = s.split('.')
left,right = s_split
if left.isdigit() and right.isdigit():
return True
elif left.startswith('-') and left[1:].isdigit() \
and right.isdigit():
return True
return False
print(check_float(1.3))
print(check_float(-1.3))
print(check_float('01.3'))
print(check_float('-1.3'))
print(check_float('-a.3'))
print(check_float('a.3'))
print(check_float('1.3a3'))
print(check_float('---.3a3'))

全局变量

name = 'aaaa'#全局变量,在什么函数都可以使用
names = []
def get_name():
names.append('hahaha')
name = 'bbbbb' #局部变量,只能在函数内使用
print('1、函数里面的name:',name)
def get_name2():
global name #要修改全局变量就要先申明
print('2、get_name2:',name)
get_name2()
get_name()
print(names)
print('3、函数外面的name:',name)

集合

   # 1、天生可以去重
# 2、集合是无序
l=[1,1,2,2,3,3]
res = set(l)#去重
l = list(res)
print(res)
#{1, 2, 3}
jihe = set() #定义一个空的集合 xingneng =['bb','aa','ccc','oooo']
zdh = ['bb','aa','opq','cc','sds']
xingneng = set(xingneng)
zdh = set(zdh)
res1 = xingneng.intersection(zdh)#取交集
res2 = xingneng & zdh #取交集
res3 = xingneng.union(zdh) #取并集,把2个集合合并到一起,然后去重
res4 = xingneng | zdh #取并集
res5 = xingneng.difference(zdh) #取差集,在a里面有,在b里面没有的
res6 = xingneng - zdh #取差集
res7 = xingneng.symmetric_difference(zdh)#对称差集,两个里不重复的值
res8 = xingneng ^ zdh #对称差集

random模块

import random
print(random.randint(100000,999999)) #随机取一个整数
print(random.uniform(1,900))#取一个小数
stus = ['xiaojun','hailong','yangfan','tanailing','yangyue','cc']
print(random.choice('abcdefg'))#随机取一个元素
print(random.sample(stus,2)) #随机取N个元素
pw = ''.join(random.sample("VWXYZ_.123456780!@()+=-><:",random.randint(2, 5)))#随机生成8到16位的字符

  

python习三的相关教程结束。

《python 学习三.doc》

下载本文的Word格式文档,以方便收藏与打印。