if 判断语句
说明
- if语句格式:if + 条件:
py
a = 1
if a==1:
print("判断对了")
说明
- if else语句:if+判断条件:执行的代码,else:执行的代码
- else英文单词意思也能理解为否则
py
a = "huazi"
b = 1
if a==b:
print("华子是numberone")
else:
print("华子是个蛋啊,华蛋")
说明
- if elif elif …… else语句
- 这里的elif和if判断性质基本类似
py
a = 1
b = "python"
c = "1"
d = "True"
if a==b:
print("1python")
elif a==c:
print("11")
elif a==d:
print("1True")
else:
print("a就是数字1,可不是c里面的字符串1")
# 上面的if和elif语句判断均不成立,所以不会执行相应的代码print
# 这里else可以理解为上面的elif判断条件都不满足,则会执行else
为什么不能用多个if
?
- 当然可以!!!没必要
- 有多个elif分支的语句块,常用于判断同一个变量是否满足的条件。一旦找到if或elif满足了条件,就会执行相应的代码,而且后面的elif和else分支语句不再判断执行。
- 而用多个if的话,已经找到了满足的条件后。后面的if语句,系统还要读一遍去判断是否满足。
- 如果是多个变量的判断,还是要把他用if独立出来
循环语句
for循环
代码说明
- 语法:for 起个名 in 可迭代对象:
- range是个函数,在()给定参数,会生成一串整数,但末尾会减1
例如:1个参数开头默认0 range(3)结果0,1,2
例如:2个参数开头默认就是本身range(2,5)结果2,3,4
py
# 9个你好
for i in range(1,10):
print("你好")
# 在控制台执行结果:
你好
你好
你好
你好
你好
你好
你好
你好
你好
for循环的详解
- for循环本质是在逐个访问可迭代对象。这个操作经常经常经常称
遍历
- 什么是可迭代对象?
例如:list1 = [1,2,3,54,67,"huazi"]这个列表就是一个可迭代的对象 - 如果我把上述的操作换成这个列表则会打印出6个你好
- 这里我们起的名字
i
,则是每次被替换迭代的对象
py
list1 = [1,2,3,54,67,"huazi"]
for i in list1:
print("你好")
print(len(list1)) #结果是6,查看一个对象的长度用len()方法,括号里面传入要看的对象。
- 拓展: 如果你还不明白迭代,请看这块代码
py
list1 = [1,2,3,54,67,"huazi"]
for i in list1:
print(f"{i}你好")
打印结果:
1你好
2你好
3你好
54你好
67你好
huazi你好
- 这里我把每次迭代的
i
放入的打印语句块,格式化了一下。 - 如何格式化实现的?
- 在单引号或者双引号外前面加一个大小写的
f
即可,里面的变量用{}包裹
格式化拓展
- 旧时的%格式化
- %s用于字符串,%d数字,%f浮点数
py
name = "huazi"
age = 18
score = 59.99
print("My name is %s and I am %d years old." % (name, age))
print("今天考试考了%f分"%(score))
# My name is huazi and I am 18 years old.
# 今天考试考了59.990000分
这里默认进行了6位小数的保留,当然也可以自己设定。
格式是 `%.数字f` 数字是几,代表保留即为小数,四舍五入。
例如:`%.2f`代表保留2位小数
- format格式化
- 用{}代替要格式化的变量
py
name = "huazi"
age = 18
print("My name is {0} and I am {1} years old.".format(name, age))
# My name is huazi and I am 18 years old.
# {}里面加数字,对应的是format里面的索引,若不加,则默认对应
- f-string格式化
- 在单或双引号前面加入大写或小写的
f
py
name = huazi
score = 100
print(f"{name},得{score}分")
# huazi,得100分
- 关于针对{}里面格式化再拓展
{:[填充字符][对齐方式][宽度]}
py
# 对齐方式:<(左对齐)、>(右对齐)、^(居中)
print(f"|{'apple':*<10}|") # 左对齐:|apple*****|
print(f"|{'apple':*>10}|") # 右对齐:|*****apple|
print(f"|{'apple':*^10}|") # 居中对齐:|**apple***|
#--------------------------------------------------
# 数字格式化
pi = 3.14159
print(f"{pi:.2f}") # 保留2位小数:3.14
print(f"{1000000:,}") # 千位分隔符:1,000,000
print(f"{0.25:%}") # 百分比:25.000000%
print(f"{0.25:.2%}") # 百分比,保留2位小数:25.00%
# 符号控制:+(显示正负号)、-(仅负数显示符号)、空格(正数前加空格)
print(f"{10:+d}") # +10
print(f"{-10:+d}") # -10
print(f"{10: d}") # 10(前面有空格)
print(f"{-10: d}") # -10
# 进制转换:b(二进制)、o(八进制)、x/X(十六进制)
print(f"{42:b}") # 二进制:101010
print(f"{42:o}") # 八进制:52
print(f"{42:x}") # 十六进制:2a
print(f"{42:X}") # 大写十六进制:2A
print(f"{42:#x}") # 带前缀的十六进制:0x2a
while循环
说明
- while循环用于重复执行一段代码,直到指定的条件不再满足为止。
- 这是一种 “条件循环”,与for循环(遍历序列)不同,while循环更适合在未知循环次数的场景下使用
py
while 条件:
# 循环体:当条件为True时重复执行的代码
语句1
语句2
...
else: # 可选部分
# 当条件变为False时执行一次
语句3
continue
和break
- continue:跳过当前循环的剩余代码,直接进入下一次循环
- break:立即终止整个循环,跳出循环体
py
# continue
count = 0
while count < 5:
count += 1
if count == 3:
continue # 跳过count=3的情况,不再执行下面的代码,再次步入下次循环也就是4
print(f"计数: {count}")
# 输出:
# 计数: 1
# 计数: 2
# 计数: 4
# 计数: 5
#--------------------------------------------------
# break
# 示例1对比
count = 0
while count < 5:
count += 1
if count == 3:
break # count=3直接是结束整个while循环程序
print(f"计数: {count}")
# 输出:
#计数:1
#计数:2
# 示例2:
count = 0
while True: # 创建无限循环
print(f"计数: {count}")
count += 1
if count >= 5:
break # 当count>=5时终止循环
# 输出:
# 计数: 0
# 计数: 1
# 计数: 2
# 计数: 3
# 计数: 4
危险操作
py
# 错误示例(无限循环),可能会导致电脑卡死
while True:
print("这是无限循环!")
# 这里会不断打印
源码讲解
- 之前在计算机基础们讲过py是个解释性语言,我们写完后的代码,执行后,计算机内部是需要转换很多次,将代码变成底层的0和1
- 拿函数的调用举例,一个函数本身里面是写了一些功能,这是一层封装。把这些功能封装成了个叫函数的东西。
- 我们继续往下拆解,这些功能,又是调用了系统内的某些东西,最终操纵计算机。这又是一层封装。再到后面物理上的电压高低的变化的封装成0和1机器码
- 在pycharm初步查看一个函数的源码,按住
ctrl
,鼠标拖到函数名上,鼠标会变成小手,点击进入 - 例如:内置函数print。注意有个参数是
end=\n
下面有关讲到
转义字符 \n
\r
\t
\b
的用法
- \n理解为回车键,是个换行符
- \t理解成一个tab键,本质是制表符
- \r理解为把这行删除完的操作,其实其作用是让光标回到当前行的起始位置。在输出内容时,它能够实现覆盖原有文本的效果
- \b理解为一个删除键,本质是退回符
py
print("123\b4") # 输出: 124 (覆盖3)
print("A\tB\tC") # 输出: A B C
print("Line1\rLine2") # 输出: Line2 (Line1被覆盖)
print("First\nSecond")# 输出两行文本
- 在print函数源码里有个参数是
end=\n
- 这个时候你就会明白为什么print函数,在输出打印的时候是一行一行的打印,而不是都打印在同一行。
- 当然你在打印时候时候可以,把end参数改成其他,实现输出打印同一行效果
- 示例:
py
for i in range(1,10):
print("你好",end="")
#你好你好你好你好你好你好你好你好你好