快捷键
优先级
变量
变量要先定义,在使用
字符串用单引号或者双引号,数字不用引号
命名规则:见名知义 不以数字和符号开头,不可使用关键字
查看关键字
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("年龄无效")
完善计算器
100以内的数能够被三整除 num1 = int(input("请输入一个整数:")) if num1>=0 and num1 <=100 : if num1%3 == 0: print("能被3整除") else:print("不能被三整除") else:print("不在0-100之间") #name = input("请输入字符串:") if name == \'tom\': age = int(input("请输入年龄:")) if age >= 30 : print("大叔") else :print("小弟") else:print("姓名错误") # 输入任意一个整数 # 如果大于0,判断是否可以被3整除 # 如果小于0判断是否为偶数 # 如果等于0,显示0 num1 = int(input("num1=")) if num1 > 0: if num1 % 3 0: print("可以被3整除") else:print("不能被3整除") elif num1 == 0: print("0") else:if num1 % 2 0: print("偶数") else:print("奇数") num1 = int(input("请输入num1:")) num2 = int(input("请输入nun2:")) a = input("运算符:") if a "+": print(num1+num2) elif a "-": print(num1-num2) elif a== "": print(num1num2) elif a== "/": if num2 !=0: print(num1 / num2) else:print("0不能做除数") else:print("输入a不合法") #0不能做除数,a非+-*/提示输入不合法
运算符优先级
只要不是0,就是True,代表条件成立,0代表条件不成立
- 比较运算符:> >= < <= ==(等于) 2. 赋值运算符= += *= /= //= %= **=
- 算数运算符(**最高,+-最低)>比较运算符(><高,==,!=低)>赋值运算符>逻辑运算符
随机数
import random
num1 = random.randint(a,b)--取a-b之间的随机整数
猜拳小游戏
如果人输入的值不是1,或者2,或者3,提示输入错误.
猜拳改进版
不管是用户输入,还是显示的结果,都没有数字,只有"石头", "剪刀", "布"
电脑出拳是只能是随机整数,用变量替换随机整数,然后再和人输入的字符串比较即可
import random pc = random.randint(1, 3) person = int(input("人出拳:请输入1或者2或者3")) if (person == 1 and pc == 2) or (person == 2 and pc == 3) or (person == 3 and pc == 1):print("电脑出的%d, 我出的%d, 我赢了" % (pc, person)) elif person == pc: print("电脑出的%d, 我出的%d, 平局" % (pc, person)) else:print("电脑出的%d, 我出的%d, 我赢了" % (pc, person)) import random pc = random.randint(1, 3) # pc代表电脑 player = int(input("请输入1或者2或者3")) if player >= 1 and player <=3: if (pc == 1 and player == 2) or (pc == 2 and player == 3) or (pc == 3 and player == 1): print("电脑出的%d, 我出的%d, 电脑赢了" % (pc, player)) elif pc == player: print("电脑出的%d, 我出的%d, 平局" % (pc, player)) else:print("电脑出的%d, 我出的%d, 我赢了" % (pc, player)) else:print("输入错误,没有诚意,不和你玩了") import random pc = random.randint(1, 3) # pc代表电脑 if pc == 1: pc = "石头" elif pc == 2: pc = "剪刀" else:
顺序,分支,循环
程序习惯从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
循环开始前定义一个变量,存放计算结果
在循环内部对变量进行计算
计算两个整数之间的偶数和
思路:可以先计算两个数的累加和,然后加上条件--偶数
因为两数的大小不确定,所以,加个判断
计算从1到5的累加和 sum=0 i = 1 while i <= 5 : sum += i i += 1 print(sum) # 计算1-100之间的累加和 sum = 0 i = 0 while i <= 100: sum += i i +=1 print(sum) # 计算从123到256的累加和 sum=0 i = 123 while i <= 256 : sum += i i += 1 print(sum) num1 = int(input("整数1:")) num2 = int(input("整数2:")) sum = 0 while num1 <= num2: if num1 % 2 ==0 : sum+= num1 num1 += 1 print(sum) num1 = int(input("整数1:")) num2 = int(input("整数2:")) sum = 0 if num1 <=num2: while num1 <= num2: if num1 % 2 ==0 : sum+= num1 num1 += 1 else:while num1 >= num2: if num1 % 2 == 0 : sum += num1 num1 -= 1 print(sum)
break
break与continue只在循环内部使用
循环遇到break终止
循环遇到continue结束本次循环,回到循环开始继续循环
continue
人造死循环
应用场景:书写代码的时候,不知道要循环多少次
显示指定行数的星号
a=6,跳出本次循环(while) a=0 while a< 10 : a+=1 if a== 6: break print(a)--a输出为1,2,3,4,5 print(a)--a最终结果为6 # 如果a=6,就不再执行continue下的代码 a=0 while a< 10 : a+=1 if a== 6: continue print(a)--1,2,3,4,5,7,8,9 # 死循环,a=6时,跳过continue下的语句,a一直满足a<10 a=0 while a< 10 : print(a)--输出0,1,2,3,4,5,6,6,6,,,然后就死循环 if a== 6: continue a += 1 # 把while后面的条件写成True,那么这个while就成为死循环 # 在死循环内部,一定要有个if语句能有条件的执行break,退出循环 while True: name = input("请输入姓名:") if name == "王大美": print("i love you") elif name == "王小美": print("i hate you") else:break
循环嵌套
一个while循环里面又嵌套了另一个while循环
变形:输出三角形
打印5行星号 # a = 0 # while a < 5: # print("") # a += 1 # 打印10行星号 # a = 0 # while a < 10: # print("") # a += 1 a = int(input("请输入行数:")) i=0 while i<a: print("") i += 1 if i >= 20: break # 内循环5次,一次输出一个 共输出一行***** # 外循环5次,输出5行 num1=0 while num1 < 5: a = 0 while a< 5: print("",end="") a += 1 print() num1 += 1 num=0--控制外循环次数 while num<5: a = 0 while a<= num: --控制内循环次数 print("",end="") a += 1 print()--内循环结束,回车换行,进入下一个外循环 num += 1 b=0 while b<5: a = 0 while a<=b: a += 1
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用冒号分隔
空的大括号定义空字典
字典的操作
元组遍历 tuple1 = (\'刘备\',\'关羽\',\'张飞\') for n in tuple1: print(n) #元组拆包 a, b ,c = tuple1 print(a) list1 = [1,3,5,7] #list1转化为tuple1,list1本身没有改变仍然存在,修改list1,tuple值不变 tuple1 = tuple(list1) print(tuple1) #tuple转化为list,list值可以改变,tuple不变 list1[0]=100 print(tuple1) tuple2 =(4,5) list2 = list(tuple2) print(list2) list2[0]=1000 print(list2) # 把元组中的具体成员放到list后面,这样list1有5个成员 list1 = ["刘备","关羽","张飞"] tuple1 = ("曹操", "周瑜") list1.extend(tuple1) print(list1) # 把元组做为一个完整的成员,放到list后面,这样list1有4个成员,最后一个成员是元组 list1 = ["刘备","关羽","张飞"] tuple1 = ("曹操", "周瑜") list1.append(tuple1) print(list1) dict1 = {\'姓名\':\'刘备\',\'性别\':\'男\',\'年龄\':24} #同一个字典,key不能重复 dict2 = {}
如果键不存在,代表添加
如果已存在,代表修改
添加/修改--字典[键]=\'值\'
删除--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])
计算器完善代码