氦!这是一篇持续更新的Python学习日记,在这里 你可以看到我的Python学习历程。
本日记只记录自己的易错/笔记,例如编程用英文括号引号这种的基本内容不会被记载。
但愿自己不会半途而废~
截止更新日期 本日记共含有:
- 字符18453
- 字数16993
- 标题50
- 段落265
- 区块477
本套课程的链接:
https://www.bilibili.com/video/BV1944y1x7SW
1.安装环境
(1)安装开发环境和编译器
需要安装开发环境和编译器。
Python安装提示:
①.python安装时需要勾选下方的"Add Python3.10 to PATH"
②.完成后点击"Disable path length limit"(消失就成功了)
③.验证Python是否安装-运行CMD,输入Python 如果提示出现Python并且前置路径变为">>>"即为成功。
PyCharm安装提示:
https://www.jetbrains.com/zh-cn/pycharm/download/#section=windows(选择灰色的免费个人版)
①.在installation options中勾选第一和最下方的两个复选框。内容为Create Desktop ShotCut(创建桌面快捷方式)和Create Associations(.py)(使所有的py文件都用PyCharm编译)
②.DATASHARNG 可选可不选
③.如果你想设置中文,在Plugins中搜索Chinese,安装图标是一个"汉"的插件,根据提示重启PyCharm即可。
(2).PyCharm配置
1.在创建新项目的时候记得选择“基本编辑器”中的安装的Python版本(3.10)
2.不要勾选 创建main.py欢迎
3.不要动 项目文件夹中的venv是该项目独立的Python虚拟环境,请勿更改或写入!
4. 创建新文件的时候提示“添加文件到Git” 点击取消 (可以勾选 “不再提示”)
5.想要打开编辑面板的话需要在PyCharm中右键项目文件夹,选择新建--Python文件(注意不要创建到venv中)
2.基础知识
(1).数据类型
字符串 str | "Hello" | "呦!" |
整数 int | 6 | -32 |
浮点数 float | 6.0 | 10.07 |
布尔类型 bool | True | False |
空值类型 NoneType | - | - |
②.字符串 str
一串字符,表示文本内容(能被单双引号包裹!)
对了,空格、数字、符号都占据一个长度
但是完整的转运符占一个长度 例如len('\n')=1 len('hi!!\n')=5
# 获取字符串长度
len('Hello')
len('呦!')
加上print事件后 输出结果如下
5
2
接下来我们将学到一个新的东西:索引
可以提取字符串某一个位置上的单个字符!
"Hello"[3]
如上面的代码返回的是第四个字母(虽然写的是3)即返回”l“
③.整数/浮点数 int/float
浮点数在Python中成为float,支持数学运算。
④.布尔类型 bool
只能返回真或假(1或0)True或False(注意T.F需要大写!!!)
经常用语逻辑判断
⑤.空值类型 NoneType
在这个类型下只有一种值:None
如果你需要一个变量,但暂时未知他的值。暂时可以用NoneType代替(占位)。
# e.g.
my_wife = None
当你不确定某个对象类型的时候,你可以使用↓
作业↓
(2).Python交互模式
①.命令行模式
写好命令→保存→运行
就是我们最正常的写代码
②.交互模式
你可以理解为 绿色运行模式
可以在cmd/Pycharm下面的控制台运行
第一个好处是不需要创建任何文件,可以直接运行
并且可以不用写print语句,Python对于运算会直接输出结果
(3).变量
基本语法: 变量名 = 变量值
e.g.
my_love = "15199999999"
my_love = "15199999999"
print("拨打:" + my_love)
这个代码中的my_love没有引号包裹,所以他作为变量出现。
如果想要保存多个变量,那么可以用另一个变量保存
比如用my_friend来保存原来的my_love 之后再为my_love覆盖新的值
my_love = "15199999999" #原来的mylove变量的值
my_friend = my_love #将mylove付给新的变量
my_love = "13366666666" #将新的值赋给mylove
注意,刚刚说到的不能为关键字是因为如果你为print赋值
print = "u123"
那么后续你就不能用print来打印了!
print = "u123"
print("Hello")
因为在当前程序中,print不再是具有打印功能的函数了
在PyCharm中 如果你打的变量名变成彩色,那么说明是关键词2,建议换一个!
(4).Python数学运算
首先,Python的乘号用得是星号【*】 除法用的是斜杠【/】
其次,Python也是按照数学运算优先级来运算的
括号最先算,之后乘方,然后乘除,最后加减
或者你可以导入一个math函数库 在最开头加入import math
import math
然后在下方调用时需要在函数名开头加上math
import math
math.函数名(...)
// 例如计算sin1 那么就用sin函数,值为1
math.sin(1)
// 这步他只进行了运算,但是没有打印出结果。所以为了得到结果,你可以这样写↓
print(math.sin(1))
// 或者为变量赋值print
result = math.sin(1) // 注册一个名为result的函数存放数学运算结果
print(result) // 打印result的值
// p.s. 这个部分的代码编辑器识别错误,识别成了lua脚本
// 只能用lua的方式写注释了,但是Python的注释方法是井号(Shift + 4)
更多数学函数以及使用方法你可以点击下方链接跳转官方文档查看
https://docs.python.org/zh-cn/3/library/math.html
实例①
❤目标:计算一元二次函数的两个根、
❤【-x²-2x+3=0】
利用求根公式
❤【-x²-2x+3=0】
在这个式子中,a = -1 , b = -2 ,c =3
a = -1
b = 2
c = 3
# 首先进行变量赋值
# 因为求根公式中是加或者减,有两个结果,那我们需要写两段代码~
# 先计算加法解
-b + (b ** 2 - 4 * a * c) **(1/2)
# b²-4ac,还有个根号是用二分之一次方替代了!
# 如果导入了math库,可以用其中的sqrt函数 他可以返回平方根结果。
import math # 首先导入函数库
a = -1
b = 2
c = 3
(-b + math.sqrt(b ** 2 - 4 * a * c)) / 2 * a
# 这是所求的第一个解
# 第二个直接改为负号就行
(-b - math.sqrt(b ** 2 - 4 * a * c)) / 2 * a
# 记得写print 不然无法输出结果!
如果你想算其他的函数,这就更方便了,直接改a,b,c的值就可以。
提示:如果你想让代码更简单,你可以注册一个叫delta的值(△)
明确他是b²-4ac
a = 1
b = 9
c = 20
delta = b ** 2 - 4 * a * c
print((-b + math.sqrt(delta)) / (2 * a))
print((-b - math.sqrt(delta)) / (2 * a))
这样就更方便啦~
这部分的内容作业如下
哦对了,这张图片中在第6,7行有一个str函数
如果不加的话会提示
can only concatenate str (not "float") to str
上网查找发现
python中,print函数不能同时识别2种数据类型,代码中money是float类型,前面为字符串,可以单独打印print(money) 但是前面加了字符串,后面的money也要变成字符串,转个类型就行 print("总价为"+str(money))
https://blog.csdn.net/fqfq123456/article/details/119506330
于是乎 将变量resulta和resultb转化为字符串
这点内容是自己DeBug学的额外内容,不在本日记的主线进程中!
(5).注释
代码刚写完的时候,只有自己和上帝知道它是干嘛的。过几天后,就只剩上帝知道了。
注释の重要性
Python里的注释用井号【#】
例如
# 这是一行注释
提示:你也可以用三引号"""来包裹注释
"""
这是
一段
多行
注释
"""
(6).数据结构
①.列表
在Python中,若要表示一个列表(数据结构),用一对方的括号表示[ ]
# e.g.
shopping_list = []
如果要预置数据,则可用引号包住,用英文逗号做隔离
# list
shopping_list = ["键盘","鼠标"]
这里课程进度介绍了一个新的方法 append 其他方法汇总可以到大标题 4.方法 下查阅!
而函数是 【函数名(对象)】这样使用。
# 方法:(具体什么是方法请到下方4.方法 大标题下查阅~)
shopping_list = ["键盘","鼠标"]
shopping_list.append("显示器")
# 这段代码意思是 为shopping_list列表 加入一项新的内容“显示器”
还有一点就是 列表可以像字符串一样 用len函数求元素个数!
例如
# len函数求列表内容个数
list1 = ["A","B","C"]
print(len(list1))
运行,可以得到输出的结果为3 即这个列表内容有3个
当然,你可以用索引来获取列表中某个位置的元素!
例如
# 索引获取某位置的元素
list1 = ["位置1","位置2","位置3"]
print(list1[0])
需要注意的是,索引是从左往右,第一个位置定为0,依次递增。
最后一个数据的位置 = 列表长度 - 1
输出结果为:
位置1
6.1.1 .列表索引赋值
如果有个列表 元素为 键盘、显示器、硬盘 。而你想修改显示器位置的元素为新的元素。
你可以这么写↓
# index覆盖元素(位置)
shopping_list = ["鼠标","键盘","显示器"]
shopping_list[1] = "音响" # 更改索引位置为1,也就是“键盘”位置的元素覆盖为“音响”
print(shopping_list)
②.字典
字典用于储存 键值对 , 键会有对应的值,键是用来查找值的。
空字典的表示方法:用一对花括号 表示【{ }】
# 字典 - 键值对
contacts = {"小明" : "13700000000",
"小花" : "13700000001"}
如果要获取某个键的值,则需要用 字典名后跟方括号,里面放入键
例如
# 获取字典中某个键的值
contacts = {"小明" : "13700000000",
"小花" : "13700000001"}
contact["小明"]
6.2.1 .元素组 tuple
长得很像列表的数据结构 但是不可变 ,这就是元素组(元组)tuple
# 元组 tuple
和列表长得很像,但是有区别。
肉眼可见的是
# tuple VS list
example_tuple = ("鼠标","键盘","键帽") # 这是元组
example_list = ["鼠标","键盘","键帽"] # 这是列表
需要注意的是,由于元组不可变,所以方法remove,append等等都不可以用
虽然不是很灵活方便,但是它可以帮助我们实现向通讯录里存三个张伟的目标~
# 哪里来的三个张伟??
contacts = {("张伟",23):"13800000001",
("张伟",34):"13700000002",
("张伟",56):"13600000003",}
此时,这些元组就是字典的键,找电话号码时,就可以把整个元组作为键。
例如
# 基于上方代码
zhangwei23_phone = contacts[("张伟",23)]
# 得到限制为23的那个张伟
print(zhangwei23_phone)
运行print 得到的结果就是23那个张伟的电话号啦~13800000001
6.2.2 字典内容的编辑
1.键的添加
首先,字典与列表一样,都是可变的,可以添加 或者删除键值对。
如果你要向字典内加入新的键值对,你可以这样写↓
字典名[键] = 值
例如
# 向子典内加入新的键值对
contacts = {"小明":"13800000022",
"张伟":"13700000002",
"小花":"13700000095",
}
# 字典名[键] = 值
contacts["美女A"] = "15500000001"
但这样写有个缺陷:如果原有该键值对,则会覆盖该键对应的值。
怎么办嘞?
我们得知道这个键是不是原来就存在于字典内。
这个时候我们可以用 【键 in 字典】
他会返回一个布尔值。
# 键 in 字典
contacts = {"小明":"13800000022",
"张伟":"13700000002",
"小花":"13700000095",
}
print("小明" in contacts)
# 这个in会返回一个布尔值。
2.键的删除
如果想删除一个键值对,那么可以用del
del字典名[键]
这样可以把键以及对应的值 从字典里删除。
但需要注意的是,如果键原本就不存在,Python就会报错~
# del 键的删除
contacts = {"小明":"13800000022",
"张伟":"13700000002",
"小花":"13700000095",
}
del contacts["小明"] # 删除字典里的键 ”小明”
print(contacts)
3.字典的内容数量
老朋友len也可以用来输出字典内键值对的数量~
# len输出字典内键值对的数量~
contacts = {"小明":"13800000022",
"张伟":"13700000002",
"小花":"13700000095",
}
print(len(contacts))
实践部分:input & if & 字典 结合の流行语含义词典
目标:在字典内查询流行语并返回含义。如果不存在即返回不存在。
# 实践部分:input & if & 字典 结合の流行语含义词典-------------------------------------------
slang_dict = {"干饭人":"意思:指吃饭的时候非常积极的人,欢吃饭热爱美食的人大多是热爱生活的,只有好好吃饭才能有力气干活,努力挣钱,加油,干饭人!", # 创建一个新的词典 并预设内容
"尾款人":"意思:指参加了网购预售活动之后还需要支付尾款的消费者.网络消费的环境的改变,导致在双十一类似的活动出现了两次交定金的环节。所以到了双十一当天,消费者就需要付尾款了。",
"爷青回":"爷的青春回来辣!意思:看到了以前熟悉的事物,我的青春回来了,用来表达人在变化后的环境中,面对曾经熟悉的人和事物时,油然而生的一种喜悦之情。这条弹幕常见于青春时代经历过的人、影视剧、游戏、动画等事物,以一种崭新的形式在当下再现和回归的场景中。",
"耗子尾汁": "意思:好自为之的谐音梗,耗子尾汁,成语“好自为之”的谐音流行语,也可以称为“耗子萎汁”、“耗子喂汁”。意同“好自为之”,比喻让某人自己看着办,用于劝诫他人的语境中。",
"年轻人不讲武德": "意思:被用来形容年轻人很“猛” 同样来源于马保国,在一次比试中马保国直接被KO,后马保国发视频说到、“年轻人不讲武德,偷袭我这个69岁的老人家”,后被网友用来调侃,十分鬼畜。 在一次和年轻人王庆民的比试中,30秒钟的时间,马保国被王庆民3次打倒在地,直接KO。事后,网上流传出马保国于2020年1月时乌青着眼睑发的视频,控诉:“年轻人不讲武德,偷袭我这个69岁的老人家,传统功夫讲究的是‘点到为止’,‘点到为止’他就输了,如果我这一拳发力,一拳就把他鼻子打骨折了。” 据马保国讲述,这是2020年1月的时候,两个治疗颈椎的年轻人和马保国之间的故事。只是碰巧在和王庆民比赛后大肆流传,加之和之前马保国吹牛说的要为传统功夫正名形成了强烈反差,所以这句话也被玩梗鬼畜。",
}
slang_dict["U1S1"] = "意思:有一说一,实话实说 字母与数字的谐音缩写,大多数是用来网友在网站下面评论等,加上U1S1似乎自己的观点更有说服力。" # 添加新的键值对
slang_dict["有内味了"] = "意思:有那个味道了 有内味了,网络流行词,在北方口音中,习惯将“那”读成“内”,意思是有那种味道(感觉)了。一般用于表示前文出现过的事物是否地道、正宗。来源于斗鱼游戏主播大司马和电棍(otto),大司马在一次游戏直播直播中和电棍一起玩,因为玩的太菜,被电棍称为“大司”,大司马那一局玩的是酒桶这个英雄,因此,后来观众看到有人玩酒桶很菜,就会刷有大司马内味了。后来这个词的意思逐渐拓展,在不同情境下有不同意思。"
slang_dict["工具人"] = "意思:指被对方当工具使唤 对他人任劳任怨地付出却得不到平等对待,被当做工具使唤。常用于男女交往女生把男生当“舔狗”或者“备胎”。"
slang_dict["小丑竟是我自己"] = "意思:原来我像个小丑 指代“舔狗”、“生活不如意的人”、“自作多情的人”、等也是网友用来调侃自己的。即使生活不愉快也要保持微笑。"
print("本词典目前收录词条:" + str(len(slang_dict)) + "条")
# 至此, 词典内容添加完成。下一步完成查询功能
query = input("请输入查询的流行语:") # 要求用户输入查询的内容 并且赋值给query变量
if query in slang_dict: # 判断用户输入的内容在不在词典内存在 存在则继续运行,否则提示暂未收录
print("查询【" + query + "】成功!")
print("您查询的词意思如下")
print(slang_dict[query]) # 输出从字典内查询到的键对应的值
# 这里一开始没搞懂的是 slang_dict[query] 这个东西的意思是在slang_dict词典中query键对应的值!
# 这个东西 就是对应的值! 所以可以直接print!
else:
print("Sorry! 您查询的流行语词典未收录~") # 如果未查询到 则提示暂未收录 并提示已收录条数
print("本词典目前收录词条:" + str(len(slang_dict)) + "条")
(7).For循环进行迭代
迭代的对象可以是列表,字典,字符串等等~
所谓迭代,就是按顺序对列表(字典)内的数据做一些事
Python的For loop 基本结构长这样↓
例如在体温列表里查找符合特定要求的体温可以这样写↓
# 例如在体温列表里查找符合特定要求的体温
temperature_list = [36.4,36.6,36.2,37.0] #这是一个提前定义好的体温列表
for temperature in temperature_list # 从t_list中查找
if temperature >= 38:
print(temperature)
print("体温异常!完球了QAQ")
你只需要查看有多少个完球了 即可知道有多少人发烧了
但是这样没有办法知道具体哪个人发烧了
所以我们需要建立一个以工号(或者名字)为键,体温为值的词典
利用for循环,就能筛选出发烧的人~
Python字典有三个方法
首先 第一个 字典名.keys 会返回字典内的所有键(就是"111"所在的位置~)
字典名.values 会返回字典内的所有值(就是"36.4"所在的位置~)
字典名.items会返回字典内的所有键值对
我们可以用for循环加if判断 将体温大于38度的值所对应的键打印出来!
即打印出发烧的人的工号!
# for + if + t_dict.items 打印发烧的人的工号
temperature_dict = {"111":36.4,"112":36.6,"113":37.0,"114":38.1,"115":35.1}
for stuff_id,temperature in temperature_dict.items():
if temperature >= 38:
print(stuff_id)
再说简单点就是for中有两个 一个是工号一个是温度 因为在词典中是成对存在的
所以for判断就需要对应!
这种写法等同于下面这种
#
temperature_dict = {"111":36.4,"112":36.6,"113":37.0,"114":38.1,"115":35.1}
for temperature_tuple in temperature_dict.items():
staff_id = temperature_tuple[0]
temperature = temperature_tuple[1]
if temperature >= 38:
print(staff_id)
(7.1).range - 与for的奇妙结合
知道高斯如何算出1到100的和吗?
著名的高斯公式:(首项 + 尾项) x 项数 / 2
range 用于表示整数序列
括号里的第一个值表示起始值,第二个字为终值
例如range(5,10) 依次为5,6,7,8,9
注意!终值不包括在内!
# e.g.
for i in range(5,10)
print(i)
这段代码意思是为i依次赋值5,6,7,8,9并依次print
另外,range可以包含第三个参数
range(5,10,2)的第三个数字(2)表示步长,也就是每次跨几个数字
如果你要打印1到9之间所有的奇数
# 打印1到9之间所有的奇数
for num in range(1,10,2)
print(num)
那高斯的那道题 我们就可以这么算:
# 1+2+...+99+100 = ?
total = 0 # 新定义一个变量 叫总数 初始为0
for i in range(1,101): # range让变量 i 依次为1,2,3...直到100
total = total + i # 为total变量 依次加上每次变大1的 i 变量
print(total) # 打印total变量
-
3.函数
(1).print
①print("内容")
(万物起源Print 哈哈哈)
e.g.
print("这里是打印的内容")
运行后会输出“这里是打印的内容”的字样
提示:控制台输出应该有三行,第一行为项目所在文件路径,第三行为退出代码。正常来说应该是0
如果是非0数字 那么就说明代码有问题 例如代码括号为中文括号
②字符串连接
打印由单个字符拼接而成的字符串~!
e.g.
print("Hello"+" World")
如果在内容里需要打印双引号,那么应该像这样写↓
print('He said "Good!"')
在这个句子中,两个单引号为一对' ' 所以他会原封不动print里面的东西(包括“”)
③.单双引号转义
如果想要打印双引号,那么外双内单也是可以的~
但是如果一个句子既有单引号,又有双引号,那该怎么办呢?
接下来我们引入一个新的东西 “转义符”
这个东西需要放在句子内的引号前面,来表明后面的引号仅仅是个符号,不是一对的配对符号~
表现他是内容的一部分,而不是字符串的结束。
print("He said \"Let\' go!\"")
当一个引号前加上反斜杠(转义符)时,Python知道将后面的符号一起读~
打印结果如下↓
He said "Let go!"
④.换行
python逐行阅读执行,所以下面的写法是不正确的。
print("Hello!
Hi!")
Python跑到第一行结尾看你没有结束,以为你忘了 在第一行就结束了。
那么如果需要换行打印呢?我们需要使用转义符的第二个用法↓
我个人觉得有点像html中的<br>或者</br>用法 总之也是让内容换行显示(print)嘛~
如果这样写的话↓
print("Hello!\nHI!")
程序会输出结果↓
Hello!
HI!
⑤.三引号跨行字符串
如果打印一首诗的话,按照前面的方法 换行十分头疼。
接下来我们隆重介绍三引号
三个连接在一起的单引号或者双引号,他会按照内容的换行来进行换行输出。
例如
print("""
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不愿醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
""")
输出的结果就如下↓
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不愿醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
注意同样也是成对出现的~‘
如果想要单独出现一个空行 像这样写即可~
print("\n")
(2).input
用于从用户那里获取输入
标准写法↓
input("这里是给用户的一些提示")
在用户端会提示内容并且等待用户输入
在用户输入后我们需要进行结果的返回 Python可以直接使用
你可以这样写↓
# 获取用户年龄
user_age = input("请输入您的年龄:")
# 此时,userage变量已被赋值 接下来可以在代码中使用了
# 例如输出结果
print("知道了,您今年:" + user_age + "岁了!")
例如下方就是一个典型的错误示范!
# input函数错误打开方式!
user_age = input("请输入您的年龄:")
user_age + 10.0
# 这样写的话Python会报错!因为input无论取到何值 ,一律返回字符串 (不支持数学运算)
这里我们再次引入几个新的概念(或者叫函数)
(3).int
用法:将其他类型转化为int类型 (将非数字转化为数字!)
打开方式:【int(" ")】
例如↓
int("666")
# 结果会返回666(整数类型)
当然,传入的参数必须为能被转化为整数的内容
例如非数字字符是不支持的!
# int函数 错误示范
int("你试试会不会报错")
(4).float
可以将其他类型的函数转化为浮点数
打开方式:【float(" ")】
(5).str
可以将其他类型的函数转化为字符串
打开方式:【str(" ")】
这在您使用print的时候很有用!
例如上面 基础函数 - (4)数学运算 中的栗子
http://1.15.70.10/p/1218#(4).Python%E6%95%B0%E5%AD%A6%E8%BF%90%E7%AE%97
整数不能和字符串连接在一起打印!
所以你可以用str将整数类型转化为字符串 用于print内
# str的重要用法
print("知道了,你今年:" + 16 + "岁了!")
# 这样会报错,因为16是整数类型,不能和字符串连接在一起打印!
这时就要用到我们的srt函数 将16从整数类型转化为字符串类型↓
print("知道了,你今年:" + str(16) + "岁了!")
回到上面的例子!(就是input函数学习部分的年龄栗子)
在第一步获取内容时,就把它转化为整数(int函数)
# 正确打开方式
user_age = int(input("请输入您的年龄:"))
user_age_after_ten_year = user_age + 10
# 当user_age函数在int函数下转化为整数类型后就可以直接进行运算了!
#如果需要打印的话,还需要将整数转化回字符串(str函数)
print("您十年后将会是:" + str(user_age_after_ten_year) + "岁。")
实践部分:BMI指数计算器(不含判断)
目标:当用户输入体重、身高后 为用户计算BMI指数(不含判断)
提示: BMI = 体重 / (身高 ** 2) | BMI值为体重除身高的平方
# BMI = 体重 / (身高 ** 2)
user_weight = float(input("请输入您的体重(千克):"))
# ↑用户输入重量并定义变量
# 注意:weight和height都要用float浮点数 因为单位是千克和米 用int的话会自动取整(的吧)
user_height = float(input("请输入您的身高(米):"))
user_BMI = user_weight / (user_height ** 2)
print("您的BMI为:" + str(user_BMI) + "!")
运行代码,得到以下结果。
请输入您的体重(千克):60
请输入您的身高(米):1.7
您的BMI为:20.761245674740486!
进程已结束,退出代码0
(6).if - 条件判断 - I
这部分内容有点多,分两部分来做笔记。
先插一个林粒粒的视频(整套学习都是她的视频哦~)
条件语句:判断条件来选择执行的内容。
if函数能够返回布尔值Bool 即True或者False
# Python的条件语句结构
if [条件]:
[执行1]
[执行2]
# 注意在条件下面的执行语句需要缩进(一般是4个空格 这里为了对齐弄了三个)
# 如果你希望条件为假的时候 什么都不做,那这下面的可以不用管~
else:
[执行1]
[执行1]
# Python会根据缩进来判断 这部分执行属于if或者else 或者不属于判断!
实践部分:今晚能不能打游戏?
目标:判断今晚能不能打游戏
背景:观察父母的脸色 判断mood_index的值
设定:大于等于60可以 ,小于60不可以
# 今晚能不能打游戏?
mood_index = int(input("父母今天的心情指数为:"))
# 新定义函数,放置输入的心情指数
if mood_index >= 60: # 注意冒号不要丢!!!
# 插一句,前面说了 input一律返回字符串 判断语句只能用于整数
# 我们还需要进行类型转换 str → int
print("恭喜!今晚不出意外的话应该可以打游戏~去吧皮卡丘!")
print("( ̄▽ ̄)~*")
else: # 还有这里冒号不要丢!!! 这个else等同于 mood_index < 60
print("额,看起来打游戏不是个明智的选择~")
(6.2).if - 条件判断 - II
这部分讲的是嵌套条件语句(在条件语句中再加一个条件语句)
# 嵌套条件语句(记得正确缩进!)
if [条件1]:
if [条件2]:
[语句A]
else:
[语句B]
注意!这个语句A是套在条件1和条件2的 需要同时满足才可以!
加个else同理 都是两个条件都满足才可以触发的判断
当然,对于条件1,我们也可以配一个else
意思是不满足条件1的话 里面的条件2看都不看,更别说触发A,B了
只能触发C ↓
# 嵌套条件语句(记得正确缩进!)
if [条件1]:
if [条件2]:
[语句A]
else:
[语句B]
else:
[语句C]
引入:还有一个东西叫elif!他也可以用于嵌套条件判断
# elif
if [条件1]:
[语句A]
elif [条件2]:
[语句B]
elif [条件3]:
[语句C]
else:
[语句D]
这种结构更加简单清晰。
但是由于Python是从上往下执行,如果情况同时满足条件2,3 则Python只会进行语句B(条件2)
因为条件2位于上方。一旦进入那个分支,就不会再看同一层级下的其他判断了!
实践部分:BMI计算器升级版(带判断)
目标:计算BMI + 判断身体健康程度!
# BMI计算器升级版 - 多条件判断
# 本版本计算器带判断模块!
# BMI = 体重 / (身高 ** 2)
user_weight = float(input("请输入您的体重(千克):")) # 用户输入重量并定义变量
# 注意:weight和height都要用float浮点数 因为单位是千克和米 用int的话会自动取整(的吧)
user_height = float(input("请输入您的身高(米):")) # 用户输入身高并定义变量
user_BMI = user_weight / (user_height ** 2)
print("您的BMI为:" + str(user_BMI) + "!")
# 偏瘦:user_BMI <= 18.5
# 正常:18.5 < user_BMI <= 25
# 偏胖:25 < user_BMI <= 30
# 肥胖:user_BMI > 30
if user_BMI <= 18.5:
print("您的BMI值属于 偏瘦 范围。")
elif 18.5 < user_BMI <= 25:
print("您的BMI值属于 正常 范围。")
elif 25 < user_BMI <= 30:
print("您的BMI值属于 偏胖 范围。")
else:
print("您的BMI值属于 肥胖 范围。")
# 若前面条件都为假 则直接可用else
当然,你可以尝试着新建一个变量存放范围值
(7)and & or & not (逻辑运算)
这块很重要,但是相对比较简单 就是与、或、非 三种逻辑运算。
①.and
标准写法如下
x = 10 and y = 15
# 必须同时满足x=10和y=15两个条件触发事件
# x、y可以是变量~
and 和 or 都 可以连接两个以及2个以上的操作对象
x > 5 and x < 10 and x * 2 == 12
# 只有所有的都为True 才会返回True
# 若任意一个为False 则求值结果为False
②.or
x = 10 or y = 15
# x=10和y=15两个条件满足一个即可触发事件
# x、y可以是变量~
③.not
not只能用于对一个操作对象进行运算
其特点为原先为True 他会返回False
原先为False 他会返回True
相当于将布尔值反向
not x > 5
提示:与或非混用时注意优先级!not > and > or
(正常情况下 除非你用括号改变运算顺序)
(8)min & max - 列表函数
min、max函数可以返回一个列表中的最小、大值
# min & max
num_list = ["1","13","-7","2","96"]
print(min(num_list)) # 打印num_list列表中的最小值
print(max(num_list)) # 打印num_list列表中的最大值
(9)sorted- 列表函数
为你重新排序列表(从小到大顺序)
并将排序好的新列表返回给你。(同时不改变原先的列表!)
# sorted
num_list = ["1","13","-7","2","96"]
print(sorted(num_list)) # 从小到大顺序列表并打印出来。
4.方法
方法v.s.函数
而函数是 【函数名(对象)】这样使用。
方法可以直接调用,应用于原列表。
不应该对原列表 重新赋值!
啥意思嘞?
以字符串为例。
如果想把字符串"Hello"转化成大写的出来(用到upper方法)
# 字符串内容全部大写
s = "Hello"
print(s.upper())
运行后会返回一个把原先字符全部大写的新的字符串
但是不影响原先的字符串,没有任何变化。
# 字符串内容全部大写
# 其他数据类型(不可变)
s = "Hello"
print(s.upper())
s = s.supper()
print(s)
# ----华丽的分割线----
# 方法类型(可变)
shopping_list = ["键盘"]
shopping_list.append("显示器") # append方法会直接改变原列表!
# 此时 列表里的内容已改变
print(shopping_list)
如下
1.upper
upper是一个方法,将字符串内容全部大写,应用该方法的对象是变量
例如下面的 s.upper是对s函数应用upper方法。
# 字符串内容全部大写
s = "Hello"
print(s.upper())
2.append
为指定列表添加内容。
用法为 【变量.方法(内容)】
# 方法:
shopping_list = ["键盘","鼠标"]
shopping_list.append("显示器")
# 这段代码意思是 为shopping_list列表 加入一项新的内容“显示器”
3.remove
移除列表内的内容。
# remove方法
shopping_list = ["键盘","鼠标"]
shopping_list.remove("鼠标")
需要注意的是,该remove的对象(内容)必须实际存在于列表里
否则就会报错!
# 错误示范
shopping_list = ["键盘","鼠标"]
shopping_list.remove("鼠标标")
# (你试试会不会报错)
有一点十分方便的是 Python的列表可以防止不同类新的内容
# 列表list可以放置不同类型的值。
list1 = ["Hello"]
list1.append(66.6)
list1.append(True)
list1.append(False)
print(list1)
这意味着你向列表中加入不同数据类型的数据,依旧能得到想要的结果。
上面的输出结果为:
['Hello', 66.6, True, False]
实践部分:Shopping购物车(列表)
目标:复习所学内容
# Shopping_list 购物清单 - 列表实践部分
shopping_list = [] # 定义一个空的列表
shopping_list.append("键盘") # 添加新元素
shopping_list.append("键帽")
shopping_list.remove("键帽") # 移除元素
shopping_list.append("音响")
shopping_list.append("电竞椅")
shopping_list[1] = "硬盘" # 将第二个元素替换为硬盘 - 注意第二个元素索引值为1!!
# print(shopping_list) # 输出元素
# print(len(shopping_list)) # 输出列表内元素个数
# print(shopping_list[0]) # 输出排在列表第一个位置的元素
price = [799,1024,200,800] #新建列表放置价钱元素
max_price = max(price) # 将max_price变量 赋值 ,赋从price中取到的最大值
min_price = min(price) # 将min_price变量 赋值 ,赋从price中取到的最小值
sorted_price = sorted(price) # 将sorted_price变量 赋值 ,赋从price中排序的元素。
print(max_price)
print(min_price)
print(sorted_price)
本部分课时为P17 & 18 两部分 内容较多 源码下载↓
https://dos73.lanzouj.com/ipT6f08y7eed
Comments NOTHING