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() 所有字符都是空白字符、 、
、
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位的字符