Python全栈笔记(三)

第三章 Python基础

1. while循环语句

生活中我们经常会遇到一些重复的情况,例如:每天奔波于家和公司之间、循环播放音乐、网站密码输错时需重新输入、老婆对你说还要 等。

代码中想要实现一些重复行的操作,可以借助while循环语句来实现。例如实现:提示用户输入用户名和密码,如果输入错误则重新提示用户输入用户名和密码 等。

while循环语句的基本结构:

while 条件:    
    ...    
    ...    
    可能有很多行码(这种在while缩进里面的代码统称循环体)

关于执行过程:如果while后面的条件为假,则不会进入循环体;如果while后面的条件为真,则进入执行循环体中的所有代码。循环体中代码执行完之后,会再次回到 while条件判断的位置,再次判断此时条件是否为真,如果为真,则循环体中的代码会再执行一遍,然后再回到while条件判断…
如果某次执行完循环体中的代码之后,再次回到while条件判断的位置时,条件为假,则循环体中代码不再执行,跳过while语句继续向下执行其他代码。

1.1 循环语句

接下来我们通过示例和练习来快速学习循环语句,并让结合之前的知识点写出一些逻辑更加严谨的代码。

示例1:

print("开始")
while True:    
    print("如果祖国遭受到侵犯,热血男儿当自强。")
print("结束")

示例2:

print("开始")
while 1 > 2:    
    print("喝干这碗家乡的酒,壮士一去不复返。")
print("结束")

示例3:

print("开始")
flag = True
while flag:    
    print("滚滚黄河,滔滔长江。")    
    flag = False
print("结束")

示例4:

print("开始")
num = 1
while num < 3:    
    print("滚滚黄河,滔滔长江。")    
    num = 5
print("结束")

示例5:

print("开始")
num = 1
while num < 5:    
    print("给我生命,给我力量。")    
    num = num + 1
print("结束")

示例6:

print("开始运行系统")
flag = True
while flag:    
    user = input("请输入用户名:")    
    pwd =  input("请输入密码:")    
    if user == 'wupeiqi' and pwd = "oldboy":        
        print("登录成功")        
        flag = False    
    else:        
        print("用户名或密码错误,请重新登录")
print("系统结束")

通过示例可以发现,只要能判断while后台的条件是真/假,就把循环的事搞定了,接下来再来搞几个练习题,大家可以参考上面的示例来做一下。

1.2 break关键字

通过上面的循环语句示例的学习,我们了解到可以通过 变量+条件 配合来实现终止循环语句的执行。

接下来我们来学习break,他可以让你快速实现终止循环。

while True:   
    ...    
    break    
    ...

关于执行过程:while循环体一旦遇到break,则立即终止while循环,从break的位置直接跳出while,去执行while之后的代码。

注意:break只能出现在循环体中,用于终止循环。

通过示例来更深入理解break的应用。

示例1:

print("开始")
while True:    
    print("红旗飘飘,军号响。")    
    break    
    print("剑已出鞘,雷鸣电闪。")    
    print("从来都是狭路相逢勇者胜。")
print("结束")

示例2:

print("开始")
i = 1
while True:    
    print(i)    
    i = i + 1    
    if i == 101:        
        break
print("结束")

示例3:

print("开始运行系统")
while True:    
    user = input("请输入用户名:")    
    pwd =  input("请输入密码:")    
    if user == 'wupeiqi' and pwd = "oldboy":        
        print("登录成功")        
        break    
    else:        
        print("用户名或密码错误,请重新登录")
print("系统结束")

所以,以后写代码时候,想要结束循环可以通过两种方式实现了,即:条件判断 和 break关键字,两种在使用时无好坏之分,只要能实现功能就行。

1.3 continue关键字

接下来,我们来学习另外一个关键字continue,他用于结束本次循环,开始下次循环。

while True:    
    ...    
    continue    
    ...

执行过程:在循环体中遇到continue之后,本次循环不再执行continue下面的代码,直接回到while条件判断的位置,开始下一次循环。

示例1:

print("开始")
while True:    
    print("红旗飘飘,军号响。")    
    continue    
    print("剑已出鞘,雷鸣电闪。")    
    print("从来都是狭路相逢勇者胜。")
print("结束")

示例2:

print("开始")
i = 1
while i < 101:    
    if i == 7:        
        i = i + 1        
        continue    
    print(i)    
    i = i + 1
print("结束")

示例3:

print("开始")
i = 1
while True:    
    if i == 7:        
        i = i + 1        
        continue    
    print(i)    
    i = i + 1    
    if i == 101:        
        break
print("结束")

写在最后,对于break和continue都是放在循环语句中用于控制循环过程的,一旦遇到break就停止所有循环,一旦遇到continue就停止本次循环,开始下次循环。

当然,通过如果没有了break和continue,我们用while条件的判断以及其他协助也能完成很多功能,有了break和continue可以在一定程度上简化我们的代码逻辑。

2. 字符串格式化

在开发的过程中我们经常遇到,将多个数据拼接,然后再处理的情况。之前,我们都是使用字符串相加来实现的拼接,今天我们来学习另外一种方式:字符串格式化。

2.1 占位符:%s

示例1:

data = "我叫%s,今年%s岁" %("Jesse",18)
print(data)

# 输出:我叫Jesse,今年18岁

代码解析过程:

  1. 现有一个含有特殊%s的字符串 【”我叫%s,今年%s岁”】;
  2. 在字符串后面紧跟 %(“替换第一个%s位置”,”替换第二个%s的位置”),就会把字符串中的特殊%s替换,最终得到替换的字符串【”我叫wupeiqi,今年18岁”】;
  3. 将这个已被替换完成字符串赋值给data,输出data就得到结果了。

注意:一般称字符串中的%s叫占位符,而占位符被替换的过程叫字符串格式化。

示例2:

name = "王哥"
message = "Alex今天不在家,%s你什么时候过来?" %(name)
print(message)

# 输出:Alex今天不在家,王哥你什么时候过来?

示例3:

name = "王哥"
template = "Alex今天不在家,%s你什么时候过来?"
message = template %(name)
print(message)

# 输出:Alex今天不在家,王哥你什么时候过来?

示例4:

user = input("请输入用户名:")
address = input("请输入地点:")
action = input("请输入行为:")
data = "%s在%s,一直在%s。" %(user,address,action)
print(data)

2.2 占位符:%%

上面通过 %s 占位符可以实现格式化,但如果想要在页面上输出输出百分比的话,就比较难搞了,例如:

# 正确
message = "兄弟们,这个片我已经下载 90 %了,马上就可以开看了啊。
print(message)

# 报错
message = "兄弟们,这个片我已经下载 %s %了,马上就可以开看了啊。" %(99,)
print(message)

# 正确
message = "兄弟们,这个片我已经下载 %s %%了,马上就可以开看了啊。" %(99,)
print(message)

在字符串格式化时,如果想要输出%,则必须写两个 %% 才能正确输出 %

写在最后,关于字符串格式化还有其他方式(如:format/f-string),但为了让初学者更好掌握,在此不再一一进行赘述,因为 %s基本上就可以完成所有的字符串格式化的任务,目前只要掌握 %s 就行。

2.3 常用的格式符号

格式符号转换
%c字符
%s通过str() 字符串转换来格式化
%i有符号十进制整数
%d有符号十进制整数
%u无符号十进制整数
%o八进制整数
%x十六进制整数(小写字母)
%X十六进制整数(大写字母)
%e索引符号(小写’e’)
%E索引符号(大写“E”)
%f浮点实数
%g%f和%e 的简写
%G%f和%E的简写

3. 运算符

提到运算符,我想大家首先想到的就是加、减、乘、除之类, 本节要跟大家聊的就是这些话题,但会系统的跟大家来聊一聊,我们写代码时常见的运算符可以分为以下几种:

  • 算数运算符,例如:加减乘除
    img

  • 比较运算符,例如:大于、小于
    img
    注意:python3中不支持 <>

  • 赋值运算,例如:变量赋值
    img

  • 成员运算,例如:是否包含
    img

  • 位运算(了解即可)
    在这里插入图片描述

  • 逻辑运算,例如:且或非
    img

3.1 逻辑运算(重要补充)

通常情况下逻辑运算一般都用在含有 条件判断 的位置,用于判断真假,例如:

# 示例1
if 1 == 1 and 2 > 3:    
    print("真")

# 示例2
name = input("请输入用户名:")
if "wupeiqi" == name or 1 == 1:    
    print("真")

# 示例3
flag = False
if not flag:    
    print("来了老弟")

# 示例4
while 1 == 2 and 2 == 9:    
    print("来了老妹")

相信大家能明白逻辑运算在以上的示例,但在python中逻辑运算还具有赋值的功能,让我们写代码简便,并且也是 面试题中的常见题型。

温馨提醒:目前常见转换为布尔值为False的有 ""0(空字符和0)

示例1:

data = "alex"

# 如果第一个值转换为布尔值为True,则 name = 第一个值
# 如果第一个值转换为布尔值为False,则 name = 第二个值
name = data or "武沛齐"
print(name)

# 练习题
v1 = 1 or 2
v2 = -1 or 3
v3 = 0 or -1
v4 = 0 or 100
v5 = "" or 10
v6 = "wupeiqi" or ""
print(v1,v2,v3,v4,v5,v6)

示例2:

# 如果第一个值转换布尔值为True,则 num = 第二个值
num = 1 and 2
# 如果第一个值转换布尔值为False,则 num = 第一个值
num = 0 and 9

# 练习题
v1 = 4 and 8
v2 = 0 and 6
v3 = -1 and 88
v4 = "" and 7
v5 = "武沛齐" and ""
v6 = "" and 0
v7 = 0 and "中国"
print(v1,v2,v3,v4,v5,v6,v7)

对上述的示例中的or和and做赋值操作做一个总结,以方便记忆:

or, 看第一个值,如果是 `真` 则选择第一个值,否则选择第二个值。
and,看第一个值,如果是 `假` 则选择第一个值,否则选择第二个值。

示例3:

此示例是将or和and合并起来使用( 面试题)。合并使用时候需要遵循优先级: 先处理and再处理or

v1 = 1 and 6 or 8 and 0 or ""
# 结果:v1 = 6
# 流程分析:
#   第一步:处理 1 and 6,得到 v1 = 6 or 8 and 0 or ""
#   第二步:处理 8 and 0,得到 v1 = 6 or 0 or ""
#   第三步:处理 6 or 0 ,得到 v1 = 6 or ""
#   第四步:处理 6 or "",得到 6

# 练习题
v1 = 0 or 4 and 3 or 7 or 9 and 6
v2 = 8 or 3 and 4 or 2 and 0 or 9 and 7
v3 = 0 or 2 and 3 and 4 or 6 and 0 or 3

3.2 运算符优先级

关于所有的运算符都有一个优先级需要遵循,优先级从高到低依次是:
img

哈哈哈,上图优先级太多是不是有点记不住?
记不住?没关系,因为常见的就没几个,推荐你记住3个即可:

  • 算数优先级优先级 大于 比较运算符

    if 2 + 10 > 11:  
        print("真")
    else:  
        print("假")
    
  • 比较运算符优先级 大于 逻辑运算符

    if 1>2 and 2<10:  
        print("成立")
    else:  
        print("不成立")
    
  • 逻辑运算符内部三个优先级 not > and > or

    if not 1 and 1>2 or 3 == 8:  
        print("真")
    else:  
        print("假")
    

以上优先级从高到低总结:加减乘除 > 比较 > not and or

4. 作业

  1. 猜年龄游戏
    要求:允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出。

    print("猜年龄游戏")
    n = 1
    while True:    
        if n == 4:
    #       print("最多尝试3次")
            break
        input_age = input("请输入年龄:")  
        
        if input_age == "35":        
            print("恭喜猜对了") 
            break
        else:
        	print("请重试,你还有%s次机会"%(3-n))
        n += 1
    
  2. 猜年龄游戏升级版
    要求:允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y,就继续让其猜3次,以此往复,如果回答N,就退出程序,如何猜对了,就直接退出。

    print("猜年龄游戏升级版")
    n = 1
    while True:    
        if n == 4:
            input_times=input("3次机会已用完,是否继续?(Y/N)")
            if input_times == "Y":
            	n = 1
            else:
            break
        input_age = input("请输入年龄:")  
        
        if input_age == "35":        
            print("恭喜猜对了") 
            break
        else:
        	print("请重试,你还有%s次机会"%(3-n))
        n += 1
    
  3. 实现用户登录系统,并且要支持连续三次输错之后直接退出,并且在每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)。

    print("开始运行系统")
    n = 1
    while True:
        if n == 4:
            print("输入错误次数过多!")
            break
    
        user = input("请输入用户名:")
        pwd =  input("请输入密码:")
    
        if user == 'user' and pwd == "123456":
            print("登录成功")
            break
        else:
            print("用户名或密码错误,剩余次数%s"%(3-n))
        n += 1
    
  4. 判断下列逻辑语句的True,False

    • 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6

      解:(以下T = True,F = False)
      F or T or F and T and T or F #先处理比较运算符,后处理逻辑运算符
      F or T or F or F #先处理and,后处理or
      T or F or F
      T or F
      T
      
    • not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6

      解:(以下T = True,F = False)
      not T and F or F and T and T or F #先处理比较运算符,后处理逻辑运算符
      F and F or F and T and T or F #处理顺序从左往右,not>and>or
      F or F or F
      F
      
  5. 求出下列逻辑语句的值。

    • 8 or 3 and 4 or 2 and 0 or 9 and 7

      解:
      8 or 4 or 0 or 7
      8
      
    • 0 or 2 and 3 and 4 or 6 and 0 or 3

      解:
      0 or 4 or 0 or 3
      4 or 0 or 3
      4 or 3
      4
      
  6. 下列结果是什么?

    • 6 or 2 > 1
    • 3 or 2 > 1
    • 0 or 5 < 4
    • 5 < 4 or 3
    • 2 > 1 or 6
    • 3 and 2 > 1
    • 0 and 3 > 1
    • 2 > 1 and 3
    • 3 > 1 and 0
    • 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值