#因为后续研究生方向学习需要,方便自己查看,也顺便网友参考,写一下自己通过黑马程序员视频的学习记录,不定期更新
Python学习记录
任何时候都记得空格!!!
官方网站 python.com
Print(“xxx”)-->显示xxx 注意程序编写必须是英文print(xxx1,xxx2,xxxN)
Pycharm创建工程:New Project-->选择工程位置,输入工程名字,选择解释器
创建python文件:右键点击工程-->输入文件名
Print语句不换行:后面加end=’ ’ 制表符\t 可以自己对齐字符串
字面量:1.整数 2.浮点数 3.字符串(“xxx”,xxx为汉字数字字母和符号) 上述字面量都可以直接打出
注释:
单行注释 # 开头 # 右边 规范:#和注释空一格
多行注释 “””注释内容“””
变量:存储数据 变量名=变量值,变量值可以改变
变量命名明了,简洁;多个单词用下划线分隔
练习:
money = 50
ice = 10
cola = 5
print("当前钱包余额:", money, "元")
money = money - ice - 2*cola
print("购买冰淇淋花费", ice, "元")
print("购买可乐花费", cola*2, "元")
print("最终,钱包剩余", money, "元")
数据类型
type()的使用:
- print(type(数据)) 直接输出
- 用变量存储
- 也可以查找变量数据类型
数据类型转换:
Int(x)-->转化为整数 float(x)-->转化为浮点数 str(x)-->转化为字符串
万物可转字符串,但字符串的内容必须是数字才能转整数和浮点数
浮点数转整数会丢失精度
标识符
规则:内容限定 只许出现英文,中文,数字,下划线 尽量别用中文 数字不可以开头
大小写区分
不可以使用关键字
运算符:
加 +; 减 -; 乘 *; 除 / ; 整除 //; 取余 % ; 指数 **;
复合赋值运算符:
c+=a --> c= c+a
c-=a-->c=c-a
c*=a-->c=c*a
c/=a-->c=c/a
c%=a-->c=c%a
c**=a-->c=c**a
c//a-->c=c//a
字符串拓展:
三种定义方式: 单引号 ‘’; 双引号 “”; 三引号 “”” “””(支持换行操作)
转义字符 \’ 解除’的效用
字符串的拼接:字面量和变量;变量和变量 用加号连接就可以 只能适用字符串本身
字符串格式化:%s其中%表示占位,s表示将变量变成字符串放入占位的地方,多个变量占位,变量要用括号括起来并按照占位的顺序填入
%d 转为整数并占位 %f转化为浮点数并占位
name = "今天"
month = 3
date = 16
time = 14.09
message = "%s,是%d月%d日%f" % (name, month, date, time)
print(message)
格式化的精度控制:m.n m控制宽度,不足时空格补齐,m小于数字本身宽度时不生效;
.n控制小数点精度,会进行四舍五入
name = "今天"
month = 3
date = 16
time = 14.09
message = "%s,是%d月%d日%.2f" % (name, month, date, time)
print(message)
快速格式化:f”内容{变量}” 不限数据类型,不做精度控制
name = "Lin"
born_year = 2001
weight = 71.2
print(f"我叫{name},我出生于{born_year},我的体重是{weight},kg")
表达式的格式化:无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码
name = "传智播客"
stock_price = 19.99
stock_code = "003032"
stock_price_daily_growth_factor = 1.2
growth_days = 7
final_price = stock_price*(stock_price_daily_growth_factor**growth_days)
message = "经过7天的增长后,股价达到了:%.2f" % final_price
print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price},"
f"每日增长系数:{stock_price_daily_growth_factor}", message)
数据输入
Input() 默认接受类型为字符串,需要其他类型需要字符串转换
user_name = input("你的用户名")
user_type = input("你的用户类型")
print(f"您好:{user_name},您是尊贵的:{user_type},欢迎您的光临。")
Python判断语句
布尔类型和比较运算符:
布尔类型:True/False
== 是否相等 != 是否不相等
> 左侧大于右侧 < 左侧小于右侧
>= 左侧大于等于右侧 <= 左侧小于等于右侧
If语句的基本格式:
:和四个空格的缩进 很重要!
print("欢迎来到黑马儿童游乐场,儿童免费,成人收费。")
age = int(input("请输入你的年龄:"))
if age >= 18:
print("您已成年,游玩需要补票10元。")
print("祝您游玩愉快。")
If else 语句
同C语言逻辑 :和四个空格的缩进 很重要!
print("欢迎来到黑马动物园。")
height = int(input("请输入你的身高(cm):"))
if height >= 120:
print("您的身高超过120cm,游玩需要购票10元")
else:
print("您的身高未超出120cm,可以免费游玩。")
print("祝您游玩愉快!")
If elif esle组合语句
同C语言else if :和四个空格的缩进 很重要!
Elif可以写多个 条件是互斥的
可以将input写入条件里
num = 2
if int(input("请输入第一次猜想的数字:")) == num:
print("猜对了,我想的是", num)
elif int(input("猜错了,再猜一次吧:")) == num:
print("猜对了,我想的是", num)
elif int(input("猜错了,再猜一次吧:")) == num:
print("猜对了,我想的是", num)
else:
print("猜错了,其实我想说的是", num)
判断语句的嵌套
嵌套通过空格缩进,来看层次关系
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循环:
While 条件: 注意:和空格缩进 设置终止条件
While条件中,只要满足条件,循环里的每个语句都会被执行
i = 1
num = 0
while i <= 100:
num = i+num
i += 1
print(num)
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}次")
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 待处理数据集(序列)
循环满足条件时执行的代码
注意点:被动的从数据集中取数据进行处理 没有循环条件 空格缩进!
嵌套的注意条件与while相同
name = "itheima is a brand of itcast"
b = 0
for x in name:
if x == "a":
b += 1
print(f"itheima is a brand of itcast 中共含有{b}个字母a")
range语句:
range(num) 从0到num的序列,不包含num本身
range(num1,num5) 从num1开始到num2结束,不包含num2
range(num1,num2,step) step为步长 不包含num2本身
num = 100
count = 0
for x in range(1, num):
if x % 2 == 0:
count += 1
print(f"1到100(不含100)范围内,有{count}个偶数")
for i in range(1,10):
for j in range(1,i+1):
print(f"{j}*{i}={j*i}\t",end=' ')
print()
Continue、break语句:
Continue:在for和while循环中,直接结束当前循环,进入下一轮循环
Break:直接结束循环
account = 10000
for i in range(1, 21):
import random
score = random.randint(1, 10)
if score < 5:
print(f"员工{i}的绩效分是{score},不满足,不发工资,下一位")
continue
if account >= 1000:
account -= 1000
print(f"员工{i},满足条件发放工资1000,公司余额:{account}")
else:
print("余额不足,不发了")
break
函数:
格式 def 函数名(传入参数):
函数体
return 返回值
注意:参数可以省略,不是必须的
返回值如果不需要,也可以省略
函数必须先定义后使用
规范:类定义或者函数定义后面有两个空行
def show_code():
print("欢迎来到黑马程序员!"
"请出示您的健康码以及72小时核酸证明")
show_code()
函数的参数 可以没有也可以有无数个
函数的返回值:
可以调用返回值
def add(a, b):
result = a+b
return result
r = add(5, 6)
print(f"{r}")
None值:
意义:无意义的,空的
函数如何返回:1. return None 2. return
使用场景:1.函数返回值 2.if判断-->相当于False 3.变量定义--> 在变量初期不想增加操作时,可以使变量= None
变量作用域:
全局变量:函数内外都起作用,不会被函数内影响而改变
局部变量:只在函数内部起作用的变量
global-->全局变量变为局部变量,可以被修改
money = 5000000
name = input("请输入你的名字:")
# 全局变量定义结束
def query(show_title):
if show_title: # 可以通过if条件决定标题的输入
print("--------余额--------")
print(f"{name},您好,您的余额剩余:{money}")
# 查询余额函数
def save_money(num):
print("--------存款--------")
global money
money += num
print(f"{name},您好,您存款成功{num}元。")
query(False)
# 存款函数
def get_money(num):
print("--------取款--------")
global money
money -= num
print(f"{name},您好,您取款成功{num}元。")
query(False)
# 取款函数
def main():
print("--------主菜单--------")
print(f"{name},您好,欢迎来到黑马银行ATM,请选择操作:")
print("查询余额\t[输入1]")
print("存款\t\t[输入2]")
print("取款\t\t[输入3]")
print("退出\t\t[输入4]") # 制表符对齐
# 主菜单函数
while True: # 无限循环
main()
keyboard_input = input("请输入您的操作:")
if keyboard_input == "1":
query(True)
continue # 跳出当前循环,执行下一个循环
elif keyboard_input == "2":
num1 = int(input("您想要存多少钱:"))
save_money(num1)
continue # 跳出当前循环,执行下一个循环
elif keyboard_input == "3":
num1 = int(input("您要想取多少钱:"))
get_money(num1)
continue # 跳出当前循环,执行下一个循环
else:
print("程序结束了,感谢您的信任!")
break # 跳出无限循环
数据容器:
含义:类似于矩阵,可以存放多个元素信息
list:[a, b, c] 其中a,b,c的元素类型不限 支持嵌套,即[[], []] 支持空列表list = ()
list下标索引:list[a] a为列表内元素的顺序 从前向后为0——N 依次加1 从后向前为-1——-N,依次减一;a不可以超过下标范围;当需要调用嵌套元素,类似矩阵的元素命名,为list[a][b][....],同样遵守以上规则
list的方法:
list.append(元素) 列表末尾追加元素
.extend(容器) 将容器内部元素取出追加到列表末尾
.insert(下标,元素) 列表指定下标处插入指定元素
del list[下标] 删除列表指定下标元素
.pop(下标) 删除列表指定下标元素,可将删除元素作为返回值
.remove(元素) 从前向后,删除元素第一个匹配项
.clear() 清空
.count(元素) 统计元素出现的次数
.index(元素) 找到指定元素的下标,找不到会报错 可将该元素重新赋值
len(列表) 统计元素个数
age_list = [21, 25, 21, 23, 22, 20]
age_list.append(31)
age_list.extend([29, 33, 30])
age1 = age_list[0]
print(f"{age1}")
age2 = age_list[-1]
print(f"{age2}")
index = age_list.index(31)
print(f"{index}")
列表的循环遍历:
for循环:
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_num_list = []
for element in num_list:
if element % 2 == 0:
even_num_list.append(element)
print(num_list)
print(even_num_list)
while循环:
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_num_list = []
index = 0
while index < len(num_list):
element = num_list[index]
if element % 2 == 0:
even_num_list.append(element)
index += 1
print(num_list)
print(even_num_list)
在while循环中,条件要注意大小,根据自己的需要,但是不要超出列表范围
元组:
tuple 与list基本相同,区别在于不可以修改,因为不可以修改,所以方法只有index、count、len
如果在tuple中嵌入list可以修改list的内容
如果元组中只有一个元素,需要在后面加一个逗号,可以保持tuple类型
t1 = ("周杰轮", 11, ["football", "music"])
index = t1.index(11)
print(f"{index}")
t1[2][0] = "coding"
print(t1)
字符串:
字符串[下标]-->根据下标索引取出特定位置的字符
字符串.index-->查找给定字符的第一个匹配的下标
字符串.replace(字符串1,字符串2)-->将字符串内的全部字符串1,替换为字符串2;不会修改原字符串,而是得到一个新的字符串
字符串.split(字符串)-->按照给定字符串,对字符串进行分隔,不会修改原字符串,而是得到一个新的列表
字符串.strip()/字符串.split(字符串)-->移除首尾的空格和换行符或指定字符串
字符串.count(字符串)-->统计字符内某字符串出现的次数
len(字符串)-->统计字符串的字符个数
特点:
1.只可以存储字符串 2.长度任意 3.支持下标索引 4.允许重复字符串存在 5.不可以修改,即使修改也是产生新的字符串 6.支持for循环
集合:
集合.add(元素)-->集合内添加一个元素
集合.remove-->移除集合内指定的元素
集合.pop-->从集合中随机取出一个元素
集合.clear-->将集合清空
集合1.difference(集合2)-->得到一个新集合,内含2个集合的差集,原来两个集合不变
集合1.difference_update(集合2)-->在集合1中,删除集合2中存在的元素,集合1被修改,集合2不变
集合1.union(集合2)-->得到一个新集合,里面有两个集合的所有元素,原有的两个集合不变
len(集合)-->得到一个整数,记录了集合的元素数量
特点:
1.可以容纳多个数据 2.可以容纳不同类型的数据 3.数据是无序储存的,所以不支持下标索引,所以也不支持while遍历,但可以用for遍历 4.不允许重复的元素出现 5.可以修改