Python基础:Day02-基础知识

79 阅读5分钟

课程目标:掌握Python基础中的必备语法知识之循环语句、字符串格式化、运算符。

1. 循环语句

1.1 while循环语句基本使用

image.png

示例1:

# 死循环
print("开始")
while True:
    print("示例1")
print("结束")

示例2:

# 正常循环
print("开始")
num = 1
while num <= 2:
    print(num)
    num += 1
print("结束")

示例3:

# 输入用户名和密码,输入错误继续输入,直到正确
print("...系统开始运行...")
flag = True
while flag:
    user = input("请输入用户名: ")
    password = input("请输入密码: ")
    if user == "jcak" and password == "123":
        print("登录成功")
        flag = False
    else:
        print("用户名或密码错误!")
print("...系统运行结束...")

示例4:

# 循环输出1~10所有整数
num = 1
while num < 11:
    print(num)
    num += 1

1.2 break

break,用于在while循环中终止循环。

示例1:

# 输入用户名和密码,输入错误继续输入,直到正确
print("系统开始运行...")
while True:
    user = input("请输入用户名:")
    userpwd = input("请输入密码:")
    if user == "Hugh" and userpwd == "123":
        print("登录成功!")
        break
    else:
        print("用户名或密码错误!")
print("系统运行结束...")

所以,以后写代码的时候,想要结束循环可以通过两种方式实现:

  1. 基于条件判断
  2. break

1.3 continue

continue,在循环中用于结束本次循环,重新判断条件开始下一次循环。

# 循环输出1~10内,除了整数3的所以数(使用continue和break)
print("运行开始")
num = 1
while True:
    if num == 3:
        num += 1
        continue
    print(num)
    num += 1
    if num == 11:
        break
print("运行结束")

1.4 while else

当while后的条件不成立时,else中的代码会执行。

while False
    不执行
    # break (直接中断整个循环,包括else)
else:
    执行

2. 字符串格式化

字符串格式化,使用更便捷的形式实现字符串的拼接。

2.1 %

2.1.1 基本格式化操作

%是占位符,%s 适用于字符串, %d 适用于整型...

name = "jack"
age = 23
text1 = "我叫%s " % "安澜"                      # 我叫jack
text2 = "我叫%s " % name                        # 我叫jack
text3 = "我叫%s,今年%d岁" % (name, age)        # 我叫jack,今年23岁

2.1.2 百分比

问题,当文本中存在占位符时,若想输入百分比,需要输入%%,才能实现百分比的输出,否则系统会认为所有的%都是占位符。

text1 = " %s兄,我晋级完成95%了" % "jack"    # 错误
text2 = " %s兄,我晋级完成95%%了" % "jack"   # 正确

2.2 format

format中的值是可以重复使用的,如下代码中第三行。

text = "我叫 {0},今年23岁".format("安澜")
text = "我叫 {0},今年{1}岁".format("安澜",23)
text = "我叫 {0},今年{1}岁,我其实叫{0}".format("安澜",23)
# 结果:我叫安澜,今年23岁,我其实叫安澜。

format格式化也可以简写,这样系统会默认排序,但是不能实现重复使用.

text = "我叫 {},今年23岁".format("安澜")
text = "我叫 {},今年{}岁".format("安澜",23)
text = "我叫 {},今年{}岁,我其实叫{}".format("安澜",23,"安澜")

format格式化也可以在占位符中命名

text = "我叫 {n1},今年23岁".format(n1 = "安澜")  
text = "我叫 {n1},今年{age}岁".format(n1="安澜",age=23)
text = "我叫 {n1},今年{age}岁,我其实叫{n1}".format(n1="安澜",age=23)

模板重用

text = "我叫 {n1},今年23岁"
data1=text.format( n1 = "安澜" )
data1=text.format( n1 = "阿西" )

2.3 f

到Python3.6版本,更便捷。

name="安澜"
age=23
text = f"我叫 {name} ,今年 {age} 岁"
text = f"我叫 {name} ,今年 {20+3} 岁"
print(text)
# 结果:我叫安澜,今年23岁

text = f"我叫 {name} ,今年 {20+3=} 岁" 
# 结果:我叫安澜,今年20+3=23岁

进制转换

text1 = f"今年 {23:#b} 岁"   # 二进制  今年 0b10111 岁
text2 = f"今年 {23:#o} 岁"   # 八进制  今年 0o27 岁
text3 = f"今年 {23:#x} 岁"   # 十六进制  今年 0x17 岁

3. 运算符

  • 算数运算符

image.png

  • 比较(关系)运算符

image.png

  • 赋值运算符

image.png

  • 逻辑运算符

image.png

not 就是取反的意思 v = True,not V #值为False

注意:not返回的是布尔值【True / False】

  • 成员运算符

image.png v1 = "is" in "alex" #返回 True / False

3.1 运算符优先级

  1. 算数优先级 大于 比较运算符
  2. 比较运算符优先级 大于 逻辑运算符
  3. 逻辑运算符内部三个优先级 not > and > or

总结: 加减乘除 > 比较 > not and or ,拿捏不准就加括号。

3.2 面试题

逻辑运算中: and 和 or 比较容易出题。计算此类逻辑值,需要先将两边的值转换为布尔值

  • and 的逻辑值,若第一个值为 True ,结果就是第二个值;若第一个值为 False ,结果就是第一个值;
  • or 的逻辑值,若第一个值为 True ,结果就是第一个值;若第一个值为 False ,结果就是第二个值;
# 正常来说 and 是对两边的值进行判断是否为真
V = True and False

V = "Cheng" and "Hugh"    
V = "Hugh" 
# 第一步,先将and前后的值转换为布尔值 True and True;
# 第二步,判断本次操作取决谁:前面是 True ,所以本次逻辑取决于 后面 值。
# 因此, V = "Hugh"

V = "" and "Hugh"
V = "" 
# 前面转换的的布尔值为 False ,因此,本次逻辑取决于 前面 的值: V = ""

V = 1 or 8
V = 1
# 前面转换的布尔值为 True,所以本次逻辑取决于 前面 的值:V = 1

V = 0 or 8
V = 8
# 前面转换的布尔值为 False,所以本次逻辑取决于 后面 的值:V = 8

面试题

如果多个 and 和 or ,先计算 and 在计算 or

v = 0 or 4 and 3 or 7 or 9 and 6       
v = 0 or 3 or 7 or 9 and 6          # 先算前面 and
v = 0 or 3 or 7 or 6                # 再算后面的 and
v = 3 or 7 or 6                     # 最后算 or
v = 3 

先计算 not ,再计算 and ,最后计算 or

v = not 0 or 4 and 3 
v = True or 4 and 3    # 先算 not 0 ,0转换布尔值为False,not False 就是 True
v = True or 3 
v = True