记笔记懒的打字的用win+H语音转文字哦
#第一天
pycharm常用快捷键

ctrl / 注释快捷键
双引号包裹的叫字符串。
单行注释:#开头 和注释内容建议以一个空格隔开
多行注释:三对双引号
变量就是在程序运行时,记录数据用的
格式:变量名称=变量的值
变量的值可以变
print()里面输出多份内容用,隔开
三类数据类型:string、int、float
验证数据类型:语法 type(被查看类型的数据)
查看的是变量存储的数据类型,变量无类型它的存储数据有
python
name="哈哈哈"
name_type=type(name)
print(name_type)
转换类型
python
num=str(11)
print(type(num),num)
任何类型都可以转换成字符串,字符串转成数字必须字符串内是数字,浮点数转整数会丢尾数缺失精度
标识符
只允许出现英文数字下划线中文,中文不推荐,数字不可以开头
英文大小写敏感,可以被区分
不可以使用关键字,大小写敏感,完全一样才报语法错误
运算符
算术运算符+-*/ // % **
//整除 %取余 **次方
赋值运算符=
复合型赋值运算符+= 表示的是将本身去进行运算 例子:c +=a等效于 c =c+a
单引号双引号三引号都可以定义字符串,三引号可以分行类似注释
字符串本身带有引号,则本身是有单引号我们就使用双引号定义,反之有双我们用单,或则使用\转义字符
python
name = '"哈哈哈"'
print(name)
name ="'刚刚'"
print(name)
name ='\'好坏\''
print(name)
name ="\"积极\""
print(name)
打印出来"哈哈哈" '刚刚' '好坏' "积极"
字符串拼接+
字符串与字符串进行拼接,不能和非字符串进行拼接
字符串格式化
%占位 s把变量放进来
python
name = "一一一"
message = "我是:%s" %name
print(message)
class_num = 57
avg_salary =1234
message ="北京%s期,毕业平均工资:%s" %(class_num,avg_salary)
print(message)
python
我是:一一一
北京57期,毕业平均工资:1234
数据类型占位
%s内容转字符串 %d 转整数 %f 转浮点型
数字精度控制
m.n形式控制,m为宽度,.n为精度会对小数部分进行四舍五入限制,m比数子本身宽度还小m不生效
#第二天
字符串格式化2
语法:f''内容{变量}''
不理会类型不做精度控制
python
name = '哈哈哈'
set_up_year_ =2002
stock_price = 19.9
print(f"我是{name},成立于:{set_up_year_},今天股价为:{stock_price}")
对表达式进行格式化
表达式:一条具有明确执行结果的代码语句
综合小练习(股票计算小程序)
python
name = "传智播客"
stock_price = 19.99
stock_code = 1003032
stock_price_daily = 1.2
growth_days = 7
print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长系数是:%.1f,经过%d天增长股价达到了:%.2f" %(stock_price_daily,growth_days,stock_price*stock_price_daily**growth_days))
python
公司:传智播客,股票代码:1003032,当前股价:19.99
每日增长系数是:1.2,经过7天增长股价达到了:71.63
input语句
数据输入,默认输出字符串类型
python
print("请告诉我今天星期几")
day = input()
print("我知道了今天:%s" %day)
python
请告诉我今天星期几
星期一 #我自己输入的
我知道了今天:星期一
也可以等同于print
python
day = input("请告诉我今天星期几")
print("我知道了今天:%s" %day)
转类型
python
num = input("银行卡密码:")
num = int(num)
print("银行卡密码类型是:", type(num))
判断语句
比较运算符,布尔类型
python
bool1 = True
bool2 = False
print(f"bool1变量内容是:{bool1},类型是:{type(bool1)}")
print(f"bool2变量内容是:{bool2},类型是:{type(bool2)}")
num1 = 10
num2 =10
print(num1==num2)
name1 ="qqq"
name2 ="www"
print(name1!=name2)
if判断语句
python
print("欢迎来到儿童乐园,儿童免费,成人收费")
age = input("请输入你的年龄:")
age = int(age)
if age>=18:
print("你已经成年,需要购票")
print("祝你玩的愉快")
if else用法
python
print("欢迎来到儿童乐园,儿童免费,成人收费")
age = input("请输入你的年龄:")
age = int(age)
if age>=18:
print("你已经成年,需要购票")
else:
print("你不需要购票")
print("祝你玩的愉快")
if elif else用法
判断是互斥且有顺序的,上一个满足后面就不会判断了,空格缩进不可省
python
if int(input("请输入身高(cm):"))<120:
print("免费")
elif int(input("请输入vip等级:"))>3:
print("免费")
elif int(input("今天几号:"))==1:
print("免费")
else:
print("需要购票")
判断语句的嵌套
python
if int(input("请输入身高(cm):")) >120:
print("身高超出免费区间")
print("如果vip等级大于3,可以免费")
if int(input("vip等级:")) >3:
print("免费")
else:
print("需要买票")
else:
print("免费")
练习题
发礼物,限制年龄18-30,且工作时间两年以上或者等级3级以上
python
if 18<int(input("请输入年龄:"))<30:
print("年龄满足")
if int(input("请输入入职时间:"))>2:
print("满足条件")
elif int(input("请输入等级:"))>3:
print("满足")
else:
print("不满足")
else:
print("不满足")
猜数字游戏案例
三次机会,要有提示猜的数字对应的情况
python
import random
num = random.randint(1,10)
guess_num = int(input("请输入数字:"))
if guess_num==num:
print("第一次就猜对了")
else:
if guess_num>num:
print("猜大了,你还有两次机会")
else:
print("猜小了,你还有两次机会")
guess_num = int(input("再次输入数字:"))
if guess_num == num:
print("第二次猜对了")
else:
if guess_num > num:
print("猜大了,你还有一次机会")
else:
print("猜小了,你还有一次机会")
guess_num = int(input("请再次输入数字:"))
if guess_num == num:
print("第三次猜对了")
else:
print("猜错了,没有机会了")
while循环语句
条件需提供布尔类型结果,True继续,False结束
空格缩进不能忘
规划好循环终止条件,否则无限循环
求1-100的和
python
i=1
sum=0
while i<=100:
sum =sum+i
i += 1
print("1-100的和为:",sum)
猜数小游戏
无限次,并输出猜测次数
python
import random
num = random.randint(1,100)
#记录猜测次数
count = 0
#通过一个布尔类型的变量,做循环是否继续的标记
flag = True
while flag:
guess_num = int(input("请输入你猜的数字:"))
count += 1
if guess_num == num:
print("猜中了")
flag = False
else:
if guess_num > num:
print("猜大了,请重猜")
else:
print("猜小了,请重猜")
print(f"你一共猜测了{count}次")
#第三天
while嵌套循环
表白案例
python
i = 0
while i<=100:
print(f"这是第{i}天进行表白")
j = 1
while j<=10:
print(f"送{j}枝玫瑰")
j +=1
print("我爱你")
i +=1
print(f"第{i-1}天表白成功")
While循环打印九九乘法表案例
使用print语句输出不换行,在括号里加end=' '
\t 制表符,效果等同于键盘按下tab键 使多行字符串进行对齐
python
i = 1
while i<=9:
j = 1
while j <= i:
print(f"{j}*{i}={j*i}\t",end='')
j +=1
i += 1
print()
for循环
本质上是遍历
语法:从待处理数据集中逐个取出数据赋值给临时变量
for临时变量 in 待处理数据集:
循环满足条件时执行的代码
待处理数据集称之为序列类型,其内容可以一个个依次取出的一个类型
统计字母a的个数案例
python
name = "hduwdfuweiaaaadhudqwaa"
count = 0
for x in name:
if x=="a":
count +=1
print(f"有{count}个a")
range语句
获取一个简单的数据序列
语法:range(num)
获取一个从0开始到num结束的数字序列(不含num本身)
语法2:range(num1,num2)
获取一个从num1到num2的数字序列(不含num2本身)
语法3:range(num1,num2,step)
获取一个从num1到num2结束的序列(不含num2本身),数字步长以step为准,默认为1,假设为2则是隔一个取一个
表白案例
python
i =1
for i in range(1,101):
print(f"表白第{i}天")
for j in range(1,11):
print(f"送的第{j}朵花")
print("我喜欢你")
print(f"第{i}天表白成功")
for循环打印九九乘法表
python
i =1
for i in range(1,10):
j = 1
for j in range(1,i+1):
print(f"{j}*{i}={j*i}\t", end='')
j += 1
i += 1
print()
continue
中断本次循环,直接进入下一次循环,可用于for循环和while循环,效果一致
只对自己所在循环生效
break
直接终止所在的本次循环
发工资案例
自己写的不知道对不对
20个员工,公司有一万奖金,绩效大于5可领取
python
i = 1
sum = 10000
for i in range(1,21):
import random
num = random.randint(1, 10)
while num>=5:
if sum >= 1000:
sum -= 1000
print(f"向员工{i}发放工资1000元,账户余额还剩{sum}元")
else:
print(f"员工{i},绩效合格,但工资发完了,下个月再来领取")
break
else:
print(f"员工{i},绩效分:{num}分,低于5,不发工资,下一位")
continue
i +=1
函数
定义语法
def 函数名(传入参数):
函数体
return 返回值
使用步骤:先定义函数,后调用函数
参数不需要可以省略
返回值不需要可以省略
python
#定义函数
def add(x,y): #形参
result = x+y
print(f"{x}+{y}结果是{result}")
#调用函数
add(1,2) #实参
python
def add(a,b):
result = a+b
return result
r=add(5,6)
print(r)
#第四天
None类型
空的,无实际意义,用于声明无内容的变量,使用在函数返回值、if判断、变量定义
函数说明文档
通过多行注释形式,对函数进行说明解释,鼠标悬停在调用函数上会显示说明文档
函数嵌套调用
一个函数里面调用了另一个函数
python
def funb():
print("2")
def funa():
print("1")
funb()
print("3")
funa()
变量
变量作用域指的是变量的作用范围
分为局部变量和全局变量
局部变量是定义在函数体内部的变量,只在函数体内部生效
全局变量在函数外面定义变量
全局变量代码
python
num = 200
def test_a():
print(f"test_a:{num}")
def test_b():
num = 500
print(f"test_b:{num}")
test_a()
test_b()
print(num)
python
test_a:200
test_b:500
200
global关键字
将函数内定义的变量声明为qu'a
python
num = 200
def test_a():
print(f"test_a:{num}")
def test_b():
global num #设置内部定义的变量为全局变量
num = 500
print(f"test_b:{num}")
test_a()
test_b()
print(num)
python
test_a:200
test_b:500
500
取款机案例
python
money =5000000
name =input("请输入姓名")
def query(show_header):
if show_header:
print("----------查询余额--------------")
print(f"{name},你的余额剩余:{money}元")
def saving(num):
global money
money +=num
print("--------------存款----------------")
print(f"{name},你存款{num}元成功")
query(False)
def get_money(num):
global money
money -= num
print("--------------取款----------------")
print(f"{name},你取款{num}元成功")
query(False)
def main():
print("--------------主菜单-------------------")
print(f"{name},欢迎来到ATM,请选择操作:")
print("查询余额/t[输出1]")
print("存款/t[输出2]")
print("取款/t[输出3]")
print("退出/t[输出4]")
return input("请输入你的选择:")
#设置循环
while True:
keyboard_input = main()
if keyboard_input == "1":
query(True)
continue
elif keyboard_input =="2":
num=int(input("请输入存款金额:"))
saving(num)
continue
elif keyboard_input =="3":
num=int(input("请输入取款金额:"))
get_money(num)
continue
else:
print("程序退出")
break
python数据容器
一个容器可以容纳多份数据,每一份数据称之为1个元素,每一个元素可以是任意类型的数据,如字符串、数字、布尔
容器根据特点不同分为五类
列表、元组、字符串、集合、字典
下标索引
从前往后,从0开始递增
从后往前,从-1开始递减
下标索引取值范围超出范围无法取出,会报错
python
my_list = ["haha","jajaja","kakakka"]
print(my_list[0])
print(my_list[1])
print(my_list[2])
print(my_list[-1])
print(my_list[-2])
print(my_list[-3])
my_list = [[1,2,3],[4,5,6]]
print(my_list[1][1]) #第一个[]为0 第二个为1 取德第二个里面的第二个
print(my_list[-2][1]) #第一个[]为-2 第二个为-1 取德第一个里面的第二个
python
haha
jajaja
kakakka
kakakka
jajaja
haha
5
2
列表的常用操作
插入、删除元素、清空列表、修改元素、统计元素个数这一系列功能称为列表的方法
查找下标
语法:列表.index(元素)
python
my_list = ["haha","jajaja","kakakka"]
index =my_list.index("haha")
print(f"haha下标索引是:{index}")
修改下标索引的值
python
my_list[0]="hhhhh"
print(f"修改后的值为:{my_list}")
插入元素
语法:列表.insert(下标,元素)
在指定下标位置插入指定元素
python
my_list.insert(1,"best")
print(f"插入后结果是:{my_list}")
追加元素
语法:列表.append(元素)
指定元素追加到列表的尾部
python
my_list.append("babab")
print(f"插入后结果是:{my_list}")
语法:列表.extend(其他数据容器)
将其他数据容器的内容取出,依次追加到列表尾部
元素删除
语法1:del 列表下标
语法2:列表.pop(下标)
语法3:列表.remove(元素)
清空列表
语法:列表.clear()
统计某元素在列表的数量
语法:列表count(元素)
统计列表内有多少元素
语法:len(元素)
练习案例
python
mylist = [21,25,21,23,22,20]
mylist.append(31)
print(f"追加数字:{mylist}")
mylist.extend([29,33,30])
print(f"追加数字:{mylist}")
print(f"取出第一个元素:{mylist[0]}")
print(f"取出最后元素:{mylist[-1]}")
index = mylist.index(31)
print(f"31下标为:{index}")
python
追加数字:[21, 25, 21, 23, 22, 20, 31]
追加数字:[21, 25, 21, 23, 22, 20, 31, 29, 33, 30]
取出第一个元素:21
取出最后元素:30
31下标为:6
#第五天
列表的遍历------while循环
python
my_list = ["hde","huidwq9","jioqhih"]
index = 0
while index < len(my_list):
element = my_list[index]
print(f"列表元素:{element}")
index +=1
for循环
python
def list_for_func():
my_list=[1,2,3,4]
for element in my_list:
print(f"元素列表有:{element}")
list_for_func()
while和for循环对比:
while可以自定义循环条件,for不可以只可以一个个取出
while可以通过控制条件实现无限循环,for理论上不可以因为被遍历的容器容量不是无限的
while循环适用于任何想要的场景,for适用于遍历数据容器的场景或简单的固定次数循环场景
输出偶数列表案例
python
my_list=[1,2,3,4]
even_for = []
for element in my_list:
if element % 2 == 0:
even_for.append(element)
print(f"元素列表有:{even_for}")
even_whlie = []
index=0
while index<len(my_list):
current = my_list[index]
if current%2==0:
even_whlie.append(current)
index +=1
print(f"元素列有有:{even_for}")
元组
列表可以修改,传递信息不能修改列表就不合适了,元组一旦定义完成,就不可修改,元组也可以封装多个不同类型的元素在内,可以修改内部list的内部元素
使用小括号定义,使用逗号隔开数据,数据可以是不同的数据类型
操作方法:index() 、count() 、len(元组)
特点:支持for循环 、和list基本相同,唯一不同在于不可修改
小案例
python
t1 = ("周杰伦",11,["aaaa","bbbb"])
index=t1.index(11)
print(f"{index}")
name = t1[0]
print(name)
t1[2].remove('aaaa')
print(t1)
t1[2].append('ccc')
print(t1)
字符串
字符的容器,一个字符串可以存放任意数量的字符,长度任意,支持下标索引,允许重复字符串存在,不可以修改,支持for循环
字符串替换
语法:字符串.replace(字符串1,字符串2)
将字符串内全部字符串1,替换成字符串2,不是修改字符串本身,而是得到一个新字符串
字符串分割
语法:字符串.split(分隔符字符串)
按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中,字符串本身不变而是得到了一个列表对象
字符串的规整操作
语法:字符串.strip() #去前后首位空格
语法:字符串.strip(字符串) #去前后指定字符串
案例
python
t = "iiiiudwh iuhduiewq wduh"
num = t.count('i')
print(num)
new = t.replace(" ","|")
print(new)
list = new.split("|")
print(list)
#第六天
序列切片

不省略下标结束那个不取,省略了取(从头到尾::)
案例
python
t = "asdhu shdiqwhd wuhd"
result = t[::-1][5:13]
print(result)
result2 = t[6:14][::-1]
print(result2)
集合

去重,无序,下标索引不支持访问,可以用for循环进行变量,不可以用while

案例去重
python
my_list = ["aaa","bbb","ccc","aaa"]
my_set = set()
for i in my_list:
my_set.add(i)
print(my_list)
print(my_set)
python
['aaa', 'bbb', 'ccc', 'aaa']
{'bbb', 'ccc', 'aaa'}
字典
提供基于key检索value的场景实现
可以是任意类型,key不可为字典
key不可以重复,重复添加等于覆盖原有数据
不可以用下标索引
常用操作

升职加薪案例
python
my_dict = {
"A":{
"部门":"科技部",
"工资":4000,
"级别":1
},"B":{
"部门":"科技部",
"工资":3000,
"级别":2
},"C":{
"部门":"科技部",
"工资":3000,
"级别":1
},"D":{
"部门":"科技部",
"工资":3000,
"级别":2
}
}
for i in my_dict:
if my_dict[i]["级别"]==1:
my_my_dict = my_dict[i]
my_my_dict["级别"] = 2
my_my_dict["工资"] += 1000
my_dict[i] = my_my_dict
print(my_dict)
数据容器分类


应用场景

容器通用功能

#第七天
字符串大小比较
从头到尾一位位比较,其中一位大后面就无需比较了
单个字符通过ASCII码表,确定字符对应的码值数字来确定大小
函数的多返回值
python
def test_return():
return 1,"aaa",True
x,y,z = test_return()
print(x,y,z)
函数参数种类
python
def user_info(name,age,gender):
print(f"姓名是:{name},年龄是:{age},性别是:{gender}")
#位置参数 ------ 默认使用形式
user_info('小明',20,'男')
#关键字参数
user_info(name='小王',age=11,gender='女')
user_info(age=10,gender='女',name='潇潇') #可以不按照参数的定义顺序传参
#缺省参数(默认值)
def user_info(name,age,gender='男'):
print(f"姓名是:{name},年龄是:{age},性别是:{gender}")
user_info('小天',13)
user_info('小天',13,gender='女')
#不定长参数

匿名函数
使用lambda关键字进行定义
语法:lambda 传入参数:函数体(一行代码)
用于临时构建一个函数,只用一次的场景
函数体只能写一行代码,多行要使用def定义带名函数
文件操作
文件编码
翻译规则,记录如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容
文件读取操作

python
f = open("C:/Users/佳美/Desktop/text.txt","r",encoding="UTF-8")
#方式1,读取全部内容
# content = f.read()
# count = content.count("aaa")
# print(content)
# print(count)
#方式2,读取内容一行一行读
count = 0
for line in f:
line = line.strip() #去除开头结尾的空格和换行
words = line.split(" ")
for word in words:
if word == "aaa":
count += 1
print(count)
f.close()
文件写操作

文件追加操作
同上操作,把w换成a
python
f = open("C:/Users/佳美/Desktop/text.txt","a",encoding="UTF-8")
f.write("dgwvuivuehahahha")
f.close()
