氦!这是一篇持续更新的Python学习日记,在这里 你可以看到我的Python学习历程。

本日记只记录自己的易错/笔记,例如编程用英文括号引号这种的基本内容不会被记载。

但愿自己不会半途而废~


更新时间:2022年8月4日20:53:46

截止更新日期 本日记共含有:

  • 字符18453
  • 字数16993
  • 标题50
  • 段落265
  • 区块477
提示:本日记内容不按照课程进度来进行。
提示:用PC端浏览获得最佳体验!有目录和索引,移动端没有

本套课程的链接:

https://www.bilibili.com/video/BV1944y1x7SW

1.安装环境

(1)安装开发环境和编译器

需要安装开发环境和编译器。

Python安装提示:

https://www.python.org/

①.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" "呦!"
整数 int6-32
浮点数 float6.010.07
布尔类型 boolTrueFalse
空值类型 NoneType--
NoneType就叫None

②.字符串 str

一串字符,表示文本内容(能被单双引号包裹!)

函数len可以获取该字符串的长度!

对了,空格、数字、符号都占据一个长度

但是完整的转运符占一个长度 例如len('\n')=1 len('hi!!\n')=5

# 获取字符串长度
len('Hello')
len('呦!')

加上print事件后 输出结果如下

5
2

接下来我们将学到一个新的东西:索引

索引,用英文小括号来使用 例如【 [ ] 】

可以提取字符串某一个位置上的单个字符!


"Hello"[3]
注意!索引顺序是从0开始数的,意思是从左往右是0,1,2,3...

如上面的代码返回的是第四个字母(虽然写的是3)即返回”l“

③.整数/浮点数 int/float

浮点数在Python中成为float,支持数学运算。

④.布尔类型 bool

只能返回真或假(1或0)True或False(注意T.F需要大写!!!)

经常用语逻辑判断

⑤.空值类型 NoneType

在这个类型下只有一种值:None

None ≠ 0 或 " " 或 False,他表示完全没有值。

如果你需要一个变量,但暂时未知他的值。暂时可以用NoneType代替(占位)。

# e.g.
my_wife = None

当你不确定某个对象类型的时候,你可以使用↓

Type函数:返回该对象的类型

作业↓


(2).Python交互模式

①.命令行模式

写好命令→保存→运行

就是我们最正常的写代码

②.交互模式

你可以理解为 绿色运行模式

可以在cmd/Pycharm下面的控制台运行

第一个好处是不需要创建任何文件,可以直接运行

并且可以不用写print语句,Python对于运算会直接输出结果

(3).变量

基本语法: 变量名 = 变量值

e.g.

my_love = "15199999999"
前面说过了 Python是从上往下逐行运行的,如果先print再赋值,那么程序得不到结果。
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
Python变量取名の硬性规则:只能由字母、数字、下划线组成且数字不能开头,不能用关键字。
Python变量名是大小敏感的!userage和userAge是两个不同的变量!

注意,刚刚说到的不能为关键字是因为如果你为print赋值

print = "u123"

那么后续你就不能用print来打印了!

print = "u123"
print("Hello")

因为在当前程序中,print不再是具有打印功能的函数了

在PyCharm中 如果你打的变量名变成彩色,那么说明是关键词2,建议换一个!

(4).Python数学运算

首先,Python的乘号用得是星号【*】 除法用的是斜杠【/】

其次,Python也是按照数学运算优先级来运算的

括号最先算,之后乘方,然后乘除,最后加减

在Python中 乘方可以用两个星号连接数字来表示 例如二次方就是 【** 2】

或者你可以导入一个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里的注释用井号【#】

例如

# 这是一行注释
在Win+PyCharm环境下 点击CTRL+?可以一键注释所选内容(和VSCODE一样的)

提示:你也可以用三引号"""来包裹注释

"""
这是
一段
多行
注释
"""

(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"}
注意事项:用冒号为键赋值,例如 为小明赋值 "小明" : "13700000000"。多个键值对之间用英文逗号分隔。

如果要获取某个键的值,则需要用 字典名后跟方括号,里面放入键

例如

# 获取字典中某个键的值
contacts = {"小明" : "13700000000",
            "小花" : "13700000001"}
contact["小明"]
注意事项:键的类型必须是不可变的!!例如可变数据类型【列表 list】就不可以作为键
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循环后跟了两个变量(stuff_id 和 temperature)因为字典名.items()在for循环时,变量会被赋值为键和值组成的元组。相当于把元组的第一个元素赋值给staff_id,第二个元素赋值给temperature.

再说简单点就是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.函数

Python不能在每行的开头随便加空格 代码中加空格是为了更加美观~

(1).print

引号可以是单或者双 但前提一定要成对配对 不然会出现bug

①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跑到第一行结尾看你没有结束,以为你忘了 在第一行就结束了。

那么如果需要换行打印呢?我们需要使用转义符的第二个用法↓

反斜杠+n 【\n】 表示换行

我个人觉得有点像html中的<br>或者</br>用法 总之也是让内容换行显示(print)嘛~

如果这样写的话↓

print("Hello!\nHI!")

程序会输出结果↓

Hello!
HI!

⑤.三引号跨行字符串

如果打印一首诗的话,按照前面的方法 换行十分头疼。

接下来我们隆重介绍三引号

三引号【""" """】

三个连接在一起的单引号或者双引号,他会按照内容的换行来进行换行输出。

例如

print("""
君不见,黄河之水天上来,奔流到海不复回。  
君不见,高堂明镜悲白发,朝如青丝暮成雪。  
人生得意须尽欢,莫使金樽空对月。  
天生我材必有用,千金散尽还复来。  
烹羊宰牛且为乐,会须一饮三百杯。  
岑夫子,丹丘生,将进酒,杯莫停。  
与君歌一曲,请君为我倾耳听。  
钟鼓馔玉不足贵,但愿长醉不愿醒。  
古来圣贤皆寂寞,惟有饮者留其名。  
陈王昔时宴平乐,斗酒十千恣欢谑。  
主人何为言少钱,径须沽取对君酌。  
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。   
""")

输出的结果就如下↓

君不见,黄河之水天上来,奔流到海不复回。  
君不见,高堂明镜悲白发,朝如青丝暮成雪。  
人生得意须尽欢,莫使金樽空对月。  
天生我材必有用,千金散尽还复来。  
烹羊宰牛且为乐,会须一饮三百杯。  
岑夫子,丹丘生,将进酒,杯莫停。  
与君歌一曲,请君为我倾耳听。  
钟鼓馔玉不足贵,但愿长醉不愿醒。  
古来圣贤皆寂寞,惟有饮者留其名。  
陈王昔时宴平乐,斗酒十千恣欢谑。  
主人何为言少钱,径须沽取对君酌。  
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。

注意同样也是成对出现的~‘

如果想要单独出现一个空行 像这样写即可~

print("\n")

(2).input

用于从用户那里获取输入

标准写法↓

input("这里是给用户的一些提示")

在用户端会提示内容并且等待用户输入

在用户输入后我们需要进行结果的返回 Python可以直接使用

你可以这样写↓

# 获取用户年龄
user_age = input("请输入您的年龄:")
# 此时,userage变量已被赋值 接下来可以在代码中使用了
# 例如输出结果
print("知道了,您今年:" + user_age + "岁了!")
注意!Python中input函数返回的值全部视为字符串(就算你输入的是数字),直接用来做运算会报错!

例如下方就是一个典型的错误示范!

# 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

这部分内容有点多,分两部分来做笔记。

先插一个林粒粒的视频(整套学习都是她的视频哦~)

https://www.bilibili.com/video/BV1944y1x7SW?p=15

条件语句:判断条件来选择执行的内容。

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

https://www.bilibili.com/video/BV1944y1x7SW?p=16

这部分讲的是嵌套条件语句(在条件语句中再加一个条件语句)

# 嵌套条件语句(记得正确缩进!)
if [条件1]:
   if [条件2]:
      [语句A]
   else:
      [语句B]

注意!这个语句A是套在条件1和条件2的 需要同时满足才可以!

加个else同理 都是两个条件都满足才可以触发的判断

一般Python的缩进都是4个空格 属于该if或else下方的语句,Python会根据缩进来判断属于哪个分支。

当然,对于条件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前置!
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)
因此,在使用方法append时,不应该(不需要)再对shopping_list重新赋值。

如下

shopping_list = shopping_list.append("显示器")
shopping_list.append("显示器")

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


未完待续。。。