标签:lex 结果 步骤 好的 快捷 取整 网吧 tin git
快捷键
优先级
变量
变量要先定义,在使用
字符串用单引号或者双引号,数字不用引号
命名规则:见名知义 不以数字和符号开头,不可使用关键字
查看关键字
import keyword
keywod.kwlist
数据类型
不同类型变量的计算
shift+enter --行内换下一行 ctrl+alt+enter -- 上一行 tab -- 向右缩进四个空格 shift tab -- 向左缩进四个空格 ctrl alt L --美化代码 ctrl / -- 加解注释 ctrl+shift+f10--自动运行 ctrl+q快速查看文档 ctrl+函数名--查看函数介绍 ctrl+d --复制当前行 ctrl+/ 单行注释# ‘‘‘多行注释‘‘‘ + - * / //取整除 %取余 幂 优先级:最高 其次:* / // % 加减最低 可通过加小括号改变优先级 多个单词全部小写,单词之间用下划线连接 大驼峰:多个单词,首字母大写 小驼峰:多个单词,首字母小写,其他首字母大写 变量名不会使用全大写 数字型:int float bool(True,False)complex 非数字型:str list tuple dict 数字型可以直接计算 字符串只能和整数相乘,代表重复n次,不能加减 字符串之间可以使用+连接
不同类型转换
input()
输入的变量结果只能是字符串,可以通过强制类型转化a=int(input("121"))
格式化字符串
如果一个字符串中出现%就是格式化字符串
%d代表格式化的是一个int,%f--float,%s--str
转义字符
可以使用强制类型转换(可转化的才能转化成功) int("123")--把字符串123转化位整数123 str(123)--整数123转化为字符串‘123‘ float(‘3.4‘)--字符串‘3.4‘转化为浮点数 和round()函数功能相同---print(int(a / b + 0.5)) a=10 b=1 print("a的值是:%d" % a) print("a的值是:%d,b的值是:%d" %(a,b)) %03d--不足3位左边补0 %.2f--保留两位小数 %%--输出一个% name = "小明" print("我的名字叫%s, 请多多关照" % name) num = 1 print("我的学号是%06d" % num) price = 8.5 weight = 5 print("苹果的单价是%.1f/斤, 购买了%.2f斤, 需要支付%.2f元" % (price, weight, price * weight)) scale = 10.01 print("数据是%.2f%%" % scale)
python-day2
pass占位符,不确定到底执行什么代码时候使用pass
if单分支
if双分支
\t tab \n 回车换行 " 双引号 \ \ \b转义字符,退格键 print("我今天\n学习\n\t\\python\n很\高"‘兴") print(r"我和\n你")--加r不转义,原样输出 print("我和你" ,end="") print(‘我和你‘) print默认以\n结尾,但是可以修改默认行为 end="\t" end="\" num1=int(input("请输入数字1:")) num2=int(input("请输入数字2:")) if num2 != 0: print(num1/num2) if分支实现加减乘除 num1=int(input("请输入数字1:")) num2=int(input("请输入数字2:")) a = input("请输入运算符") result=0; if a‘+‘: result=num1+num2; print(result) if a‘-‘: result = num1 - num2; print(result) if a‘‘: result=num1num2; print(result) if a‘/‘: result = num1/num2; print(result)
逻辑判断
if多分支
if嵌套
注意if和else的嵌套关系,相同层次才能配对
age=int(input("请输入年龄:")) if age>= 18: print("可以去网吧") else:print("回家写作业") #判断奇偶数 num1=int(input("输入任意整数:")) if num1%2==0: print("num1是偶数") else:print("num1是奇数") num1 = int(input("输入任意数:")) if num1 >= 0 and num1 <= 120: print("0-120之间") else:print("大于120") #判断用户名和密码 name = input("输入登陆账号:") passwd = input("输入登陆密码:") if name == ‘itcast‘ and passwd == ‘123456‘: print("通过登陆") else:print("登陆失败") #判断正负数 num1 = int(input("输入任意整数:")) if num1 > 0: print("正数") elif num1 == 0: print("0") else:print("负数") #判定年龄范围 age=int(input("请输入年龄:")) if age < 10 and age > 0 : print("小孩") elif age>10 and age<=20 : print("小朋友") elif age>20 and age <30 : print("年轻人") elif age>30 and age<=50 : print("中年人") elif age > 50: print("老年人") else:print("年龄无效")
完善计算器
运算符优先级
只要不是0,就是True,代表条件成立,0代表条件不成立
顺序,分支,循环
程序习惯从0开始计数,一般都从0开始
while循环
循环计数
循环计算累加和
pc = "布" player = input("请输入石头或者剪刀或者布") if (player == "石头") or (player == "剪刀") or (player == "布"): if (pc == "石头" and player == "剪刀") or (pc == "剪刀" and player == "布") or (pc == "布" and player == "石头"): print("电脑出的%s, 我出的%s, 电脑赢了" % (pc, player)) elif pc == player: print("电脑出的%s, 我出的%s, 平局" % (pc, player)) else:print("电脑出的%s, 我出的%s, 我赢了" % (pc, player)) else:print("输入错误,没有诚意,不和你玩了") while 条件: 要重复的代码 # 死循环,计数的变量值不更新,一直循环 n = 0 while n <= 5 : print("aaa") # 计数从0开始,正序输出0-5 n = 0 while n <= 5 : print(n,end=" ") n += 1 # 计数从5开始,逆序输出5-0 n = 5 while n > 0 : print(n,end=" ") n -= 1 #计数从0开始,输出从5-0的数字 i=0 while i <= 5: print(5-i) i += 1 # 计数从5开始,循环输出0-5的数字 n = 5 while n >= 0 : print(5-n,end=" ") n -= 1
循环开始前定义一个变量,存放计算结果
在循环内部对变量进行计算
计算两个整数之间的偶数和
思路:可以先计算两个数的累加和,然后加上条件--偶数
因为两数的大小不确定,所以,加个判断
break
break与continue只在循环内部使用
循环遇到break终止
循环遇到continue结束本次循环,回到循环开始继续循环
continue
人造死循环
应用场景:书写代码的时候,不知道要循环多少次
显示指定行数的星号
循环嵌套
一个while循环里面又嵌套了另一个while循环
变形:输出三角形
for循环
for主要用在遍历
计算字符数量
range范围函数
生成一个指定范围的数列
print(a,end="") print() b += 1 #或者 num1=0 while num1 < 3: a=0 while a<= num1: print(a+1,end="") a += 1 print() num1 += 1 for n in 字符串: ? 循环要执行的代码 str1=‘hello itcast‘ # for循环遍历字符串,for循环的次数代表字符的个数,定义变量i用于计算次数 i =0 for n in str1: i+=1 print(n)--输出字符 print(i)--输出字符数量 #str1 = "abc sfsfd sfdsfdsf werwerfwe sdsdfdsf " str=input("请输入字符串:") isNull=0 num=0 numd=0 for n in str: if n != " " isNull += 1 if n ==" ": num+=1 if n ==‘d‘: numd +=1 print("非空格的有效字符数量:%s"%int(num)) print("空格的数量:%s"%int(num)) print("d的数量:%s"%int(numd))
for替换while
改进版
0-100之间的偶数和,包括0和100
列表list
list相当于数组,用[]定义,
list中可以有多个元素,元素之间用逗号分隔
每一个元素都有对应的下标,下标从0开始
index是索引,不是关键字
range(start,stop,step) start开始值 stop最大值,最大值不包含stop, step步长,step为负时从大到小 range(1, 5) 生成从1到4的4个数字,不包含5 range(1, 5, 2) 生成1, 3两个数字 range(10, 0, -3) 生成10, 7, 4, 1这个范围 for循环遍历range()范围 for n in range(1, 5): print(n) while循环更多时候用在指定次数的循环 for多用于遍历 while和for可以互换 # 输出5行***** for n in range(0,5): for a in range(0,5): print("",end="") print() # 输出三角形 for n in range(0,5): for i in range(0,n+1): print("",end="") print() sum = 0 for n in range(0,101,2): sum += n; print(sum)
常用方法
小结
下标为负数,代表从后往前数,最后一个成员编号为-1
小练习
list2 = [1,2,3] list1 = ["刘备","关羽","张飞"] list3 = []#空列表 print(list1[1])#显示第二个元素的值 print(list1[3])#超出列表范围,报错 print(list2)#显示list所有成员,同时会显示中括号 list1.insert(1,‘周瑜‘)#在指定的位置插入指定值 list1.append(‘曹操‘)#在列表末尾追加指定值 list1.extend(list2)#把指定列表添加到最后 list1[0] = ‘刘三‘#修改指定元素的值 list1.remove(‘刘三‘)#删除指定的值 list1.remove(‘王五‘)#如果指定值不存在,报错 list1.pop()#删除最后一个成员 list1.pop(1)#删除指定索引的成员 list1.clear()#删除所有成员 print(list1) #返回指定值在列表中出现的次数,不存在返回0 a = list1.count(‘关羽‘) b = list1.count(‘张三‘)#返回指定值在列表中出现的次数 print(a) print(b) list2.sort()#列表成员从小到大排序 print(list2) list2.sort(reverse=True)#列表成员从大到小排序 list2.reverse()#把列表逆置 查询list1[索引] 添加 list1.insert(下标,值) list1.append(值) list1.extent(list2) 修改 list1[索引]=值 删除 list1.remove(索引,值) list1.remove(值) list1.pop() list1.pop(索引) list1.clear() 查询出现次数list1.count(值) list3 = []#空列表 list3.append(5) list3.append(5) list3.append(13) list3[1] = ‘周瑜‘ print(list3)
循环遍历列表
课堂练习
拆包
通过一个赋值语句,把list中所有成员的值赋值给多个变量
二维列表
多维列表
公用方法
for n in 列表: 循环要执行的代码 list1 = ["刘备","关羽","张飞"] #for循环3次,第一次n=刘备, for n in list1: print(n) list2 = [0, 3, 3, 9, 10 ,3 ,5] num=0#计算列表成员数量 sum=0#计算列表所有数字相加的总和 for n in list2: sum += n num += 1 print(num) print(sum) list2 = [‘刘备‘,‘张飞‘] #拆包,等号左边的变量数量和右边的值要相等 a,b = list2 #a相当于list[0],b相当于list[1] print(a) print(b) list1 = [[‘刘备‘, 30], [‘张飞‘, 20]] print(list1[0][0])#第一个列表的第一个成员 print(list1[0][1])#第一个列表的第二个成员 print(list1[1][0]) list1[0][0]=‘关羽‘#修改第一个列表第一个成员为‘关羽‘ list1[1][1]=50 list1[0][1]=10 print(list1) list4 = [[[‘刘备‘, 30], [‘关羽‘, 40]],[[‘刘备‘, 30], [‘关羽‘, 40]]] list5 = [[[[‘刘备‘, 30], [‘关羽‘, 40]],[[‘刘备‘, 30], [‘关羽‘, 40]]], [[[‘刘备‘, 30], [‘关羽‘, 40]],[[‘刘备‘, 30], [‘关羽‘, 40]]]]
练习
元组
相当于只读的list,通过 元组(索引)得到指定成员的值,不能删除/修改/添加
list方法里面只有查询和count能用
公共方法len(),max(),min(),值 in tuple1都适用
元组遍历和拆包
list1 = [1,5,34,23,6] #返回列表中的成员数量 print(len(list1)) #返回列表中最大成员 print(max(list1)) print(min(list1)) #如果指定值在列表里面,条件成立 if 5 in list1: print("5 in list1") #如果指定值不在列表里面,条件成立 if 20 not in list1: print(‘20 not in list1‘) #查找列表中是否有刘备,如果有将其删除 list1 = ["张飞", "刘备", "关羽", "刘邦", "刘老二" ,"曹操" ] if ‘刘备‘ in list1: list1.remove(‘刘备‘) print(list1) #显示列表中最大值 list2 = [3, 5, 67, 2, 34, 12, 5, 11] print(max(list2)) #元组是个只读list,可以通过tuple1[索引]取得成员的值 # 元组的值不能修改,不能添加,不能删除 tuple_1 = (‘刘备‘,‘关羽‘,‘张飞‘) print(tuple_1[0]) tuple_2 = () tuple_3 =(‘刘备‘,)#如果只有一个成员,后面必须写逗号 #元组可以省略括号 tuple_4 =4,5,6 tuple_5 = ‘liubei‘ , tuple_6 = (5,7,10,5) #只能用count方法 print(tuple_1.count(‘刘备‘)) print(tuple_6.count(5)) print(max(tuple_6)) if 5 in tuple_6: print(‘5 in tuple_6‘)
元组和list的转化
案例
字典
用大括号定义,内部存放键值对,多个键值对用逗号分隔
键是key,值是value,key不重复,key和value用冒号分隔
空的大括号定义空字典
字典的操作
如果键不存在,代表添加
如果已存在,代表修改
添加/修改--字典[键]=‘值‘
删除--pop(键)clear()
查找指定键对应的值--字典[键]
课堂练习
遍历字典
拆包方式遍历字典
dict1 = {‘姓名‘:‘刘备‘,‘性别‘:‘男‘,‘年龄‘:24} #同一个字典,key不能重复 #添加键值对,key为班级,value为1班 dict1[‘班级‘]=‘1班‘ #修改键对应的值 dict1[‘姓名‘]=‘张三‘ print(dict1) dict1.pop(‘班级‘)#删除键班级和键对应的值 dict1.clear()#删除所有键和值 print(dict1[‘性别‘])#显示键性别对应的值 dict1 = {‘name‘:‘周瑜‘,‘age‘:32,‘id‘:‘003‘} # 字典中增加一个键值对sex:男 # 删除键id # 把键age的值改为26 dict1[‘sex‘] = ‘男‘ dict1.pop(‘id‘) dict1[‘age‘]=26 print(dict1) for n in 字典: 循环代码 dict1 = {‘姓名‘:‘刘备‘,‘性别‘:‘男‘,‘年龄‘:24} for n in dict1: print(n,end=" ")#遍历得到键 print(dict1[n])#遍历得到值 #两张写法的结果相同 print(n,dict1[n])#遍历得到键和值 for a,b in dict1.items(): ? a,b就是对应的键和值
练习
字符串
如果字符串中有单引号,那么字符串就用双引号引起来
如果有双引号,字符串就用单引号引起来
如果字符串中,既有单引号又有双引号,用转义字符
字符串索引
遍历字符串
字符串常用方法
dict1 = {‘姓名‘:‘刘备‘,‘性别‘:‘男‘,‘年龄‘:24} #遍历时候使用items(),那么n是一个包含键和值的元组 for n in dict1.items(): print(n) #对n拆包 for n in dict1.items(): a, b = n print(a,b) #在循环的开始直接拆包(省略了步骤n) for a , b in dict1.items(): print(a,b) dict2 = {‘a‘:23,‘b‘:4,‘c‘:9,‘d‘:3,‘e‘:12} #传统遍历方法 for n in dict2: print(n,dict2[n]) # 拆包遍历 for a,b in dict2.items(): print(a,b) str1 = ‘aaaaa"bbbbbbb‘ str2 = "aaaaa‘bbbbbbb" str3 = ‘aaaaa"bbbbbbb‘ str4 = "aaaaa‘bbbbbbb" str5 = ‘aaaaa‘bbbb"bbb‘ str1 = ‘abcdefg‘ print(str1[0]) print(str1[-1]) #str1[0]=1#不能通过下标修改字符串的字符 #print([str1[11]])#不能写超出范围的索引,会报错 for n in str1: print(n) #字符串[索引]--得到指定索引位置的字符 str1 = ‘abcdef‘ print(str1[3])
计算器完善代码
切片
从一个大的字符串中切出小的字符串
字符串,元组,列表都能切片
案例
函数的作用是,把一些重复使用的代码,封装到一个函数里面
执行代码的时候,就不用再次写了,直接调用函数即可
使用步骤:先定义再调用
函数的定义和调用
print("请输入整数") 字符串[开始索引:结束索引:步长] 左闭右开--步长默认为1,1可省略 第一个字符索引为0,最后一个索引为-1 步长的正数代表从左往右,负数代表从右往左 从第一个开始切,开始索引可以省略;切到最后一个,最后索引可省略 str1 = ‘我爱python‘ str2 = str1[:-1]#从第一个字符开始,到最后,但不包含最后 str3 = str1[:]#从开始到结束,包含所有字符 str4 = str1[::2]#从开始到结束,步长为2 str5 = str1[2:4]#从索引2开始,到索引4结束,但不包含索引4 str6 = str1[:4]#从第一个开始,到索引为4,但不包含4 str7 = str1[2:]#从第二个开始 str8 = str1[::-1]#逆置 str9 = str1[::-2]#逆置,从右往左,步长为2 list1 = [‘我爱python‘,‘我爱测试‘,‘今天学习‘] list1[1]=list1[1][::-1]#把第二个成员逆置后,再赋值给第二个成员 print(list1) def 函数名(参数1,参数2,,): 函数封装的代码 #函数名的命名规则和变量一致 函数名(实参1,实参2,,,)
无参
有参
函数的参数
形参
实参
函数的返回值
在设计函数的时候,有些函数并不是要显示什么,只是要返回给调用者一个值
eg,len和max这些函数都是不显示任何结果,只是返回一个值
def my_func(): print(""20) my_func() def my_func2(num1): # print(""num1)#与使用下面的while语句结果相同 while num1>=0: print("*",end="") num1 -= 1 my_func2(4) 定义函数的时候括号里写的参数 形参必须是变量 定义函数的时候,形参没有值 调用函数的时候实参会把值传递给形参 调用函数的时候括号里写的参数 实参可以是变量,常量和表达式 def my_sum(): # 函数的定义,函数一旦定义完成就不要修改封装的代码了 a = 2 b = 5 print(a+b) print() def my_sum(a,b): print(a+b) my_sum(5,6) #实参是常量 num1 = 3 num2 = 4 my_sum(num1,num2) #实参是变量 my_sum(3+4,num1+num2) # 实参是表达式python
return关键字
函数遇到return就终止,return后面的代码不会被执行
函数返回值存在的意义
1.函数如果写死了,就是print显示一个具体的值,那么这个函数的功能是单一的,如果需求发生改变,必然要
修改函数已经封装好的代码
2.如果函数通过return把值返回给调用者,那么函数就相对比较灵活,不会因为需求改变而修改函数内部的
代码
实现一个len函数,叫my_len
list1 = [3,5,6] len(list1) a = len(list1) print(a) print(len(list1)) print(max(list1)) def my_sum(num1,num2): result = num1+num2 print(result)#不带返回值,直接输出 my_sum(1,2) def my_sum2(num1,num2): result = num1 + num2 return result#返回值 a = my_sum2(1,2)#返回结果需要存放在变量里面,然后进行输出 print(a) def my_max(a,b): if a > b: return a else:return b print(a,b)# 改语句不执行,因为执行到return,程序已经结束 print(my_max(4,5)) def my_len(arg): num = 0 for n in arg: num += 1 return num #集合长度大于5,显示ok,否则不ok; #字符串长度大于10 显示yes,否则no list1 = [3,7,6,4] str1 = ‘sadfoidoasufpio‘ if my_len(list1) > 5: print("ok") else:
课堂练习-my_avg
课堂练习
函数的嵌套
print(‘not ok‘) if my_len(str1) > 10: print(‘yes‘) else:print(‘no‘) #模仿max和min实现my_avg--设置两个变量存放和计数,遍历集合,数值累加,计数加一,返回平均值 def my_avg(arg): sum = 0#求和变量 num = 0#计数变量 for n in arg: sum += n # 求和 num += 1 # 计数 return sum/num #返回平均值 list1 = [3,7,6,4] print(my_avg(list1) def my_func(start,stop): sum = 0 while start <= stop: sum += start start += 1 return sum print(my_func(45,6)) def circle(r): pi = 3.14 return pi * r **2 print(circle(3)) #能否整除 def my_func(num1, num2): if num1 % num2 == 0: return True else:return False print(my_func(8,4)) #如果一个函数返回bool,直接在条件中写函数名即可 if my_func(9,4): print(‘能整除‘) else:print(‘不能整除‘)
一个函数内部又调用了另一个函数
变量的作用域
局部变量
定义:在函数内部定义的变量,只能在函数内部使用
作用:函数内部定义,函数执行完成后,就消失了
不同的函数,可以有同名的局部变量,互不影响
生命周期:
在函数执行时候创建
在函数执行完成后回收
主要用于存放函数内部执行的一些临时数据
全局变量
在函数外部定义的变量,在函数内部和外部都能使用,不推荐使用
定义在函数外部,一般定义在所有函数的上方
一旦全局变量的值改变了,所有用到这个变量的函数,都有效
不能在函数外部使用局部变量
def test1(): print(‘teset1‘) def test2(): print(‘test2‘) test1() def test3(): print(‘test3‘) test2() test3()# 先执行test3-test2-test1 def my_func1(): a = 10 print(a) def my_func2(): a = 5 print(a) #函数内部的两个局部变量a,只是名字相同,但是是不同的变量 my_func1() my_func2() num1 =10#全局变量num def my_num1(): print(num1) def my_num2(): print(num1) my_num1() num1 = 20 # 修改全局变量值 my_num2()
全局变量和局部变量可以重名
global关键字
在函数内部修改一个全局变量的值,修改之前需要用global修饰这个全局变量的名字
如果把一个函数放到print的括号里的含义
用print显示这个函数的返回值
函数一定要有返回值,才能放到print里面显示
函数必须通过return才有返回值
形参的本质是函数内部的局部变量
def my_func1(): a = 10 # a是个局部变量,函数执行完,就消失了 my_func1() # 执行代码,执行完就消失了 print(a) # 不能再函数外部使用局部变量,代码报错 num1 = 1 #全局变量num1 def my_func(): num1 = 10 print(num1) #这里显示局部变量num1的值 my_func() # 输出10 print(num1) # 这里显示全局变量num1的值 输出1 #上面代码出现了两个变量,一个是全局num1,一个是局部num1 num1 = 10 def my_func(): global num1 # 这里不是定义变量,而是说有个全局变量num1 num1 = 0 #由于上面有global,所以这里不是定义局部变量,而是修改全局变量num1的值 my_func() #由于函数内部修改了全局变量num1的值,所以print输出0 print(num1) name = ‘张三‘ def my_test1(): global name name = ‘李四‘ return name print(my_test1()) def my_func(a): # 形参a,形参也是属于函数内部的局部变量 a += 1 # 这里修改的是局部变量的值 print(a) # 这里显示局部变量的值 def my_func2(a):# 形参a a -= 1 print(a) a = 10 # 全局变量a my_func(a) # 这个a既是全局变量,又是实参,调用函数的时候会把全局变量a的值传递给局部变量 my_func2(a) print(a) # 显示全局变量a的值
形参的值来自于实参
形参的值改变了,不影响实参的值
如果形参类型为列表或字典,形参值改变会影响实参
参数值小结
标签:lex 结果 步骤 好的 快捷 取整 网吧 tin git
原文地址:https://www.cnblogs.com/rainsnow/p/13900373.html