Skip to content

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放入的打印语句块,格式化了一下。
  • 如何格式化实现的?
  1. 在单引号或者双引号外前面加一个大小写的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分

  • 关于针对{}里面格式化再拓展
  1. {:[填充字符][对齐方式][宽度]}
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

  • continuebreak
  • 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="")
#你好你好你好你好你好你好你好你好你好