8天学习python笔记03

day03 Python基础

目标:掌握Python基础中的必备语法知识。

1.循环语句

  • while循环
while 条件:
    ...
    ...
    ...
print("123")
while 条件:
    ...
    ...
    ...
print("456")
1.1循环语句基本使用

示例1:

print("开始")
while True:
    print("Alex是一个杜比")
print("结束")

#输出:
开始
Alex是一个杜比
Alex是一个杜比
Alex是一个杜比
...

示例2:

print("开始")
while 1 > 2:
    print("如果今天下雨了,就休息")
print("结束")
#输出:
开始
结束

示例3:

print("开始")
data = True
while data:
    print("如果今天下雨了,就休息")
print("结束")
#输出:
开始
如果今天下雨了,就休息
如果今天下雨了,就休息
如果今天下雨了,就休息
...

示例4:

print("开始")
flag = True
while flag:
    print("滚滚长江东逝水。")
    flag = False
print("结束")

#输出:
开始
滚滚长江东逝水
结束

示例5:

print("开始")
num = 1
while num < 3:
    print("滚滚长江东逝水。")
    num = 5
print("结束")

#输出:
开始
滚滚长江东逝水。
结束

示例6:

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

#输出:
开始
生命有力量。
生命有力量。
生命有力量。
生命有力量。
结束
练习题:重复三次输出我爱我的祖国
num = 1
while num < 4:
    print("我爱我的祖国")
    num = num + 1
    
#输出:
我爱我的祖国
我爱我的祖国
我爱我的祖国
1.2 综合小案例:

请实现用户登录系统,如果密码错误则反复提示让用户重新输入,直到输入正确。

print("开始进入系统")
data = True
while data:
    user = input("请输入用户名:")
    pwd = input("请输入密码:")
    if user == "alex" and pwd == "123":
        print("欢迎进入系统")
        data = False
    else:
        print("用户名或密码错误,请重新输入:")

print("退出系统")
练习题

1.补充代码实现

猜数字,设定一个理想数字比如: 66,一直提示让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有输入等于66, 显示猜测结果正确,然后退出循环。

number = 66
while True:
    num = int(input("请输入数字:"))
    if num > number:
        print("猜测大了.")
    elif num < number:
        print("猜测小了.")
    else:
        print("猜测结果正确")
        break  # 退出循环

2.使用循环输出1-100所有整数。

num = 1
while num <= 100:
    print(num, end=",")
    num = num + 1

3.使用循环输出123456 8910,即: 10以内 除7 以外的整数。

num = 1
while num < 11:
    if num == 7:
        pass
    else:
        print(num, end=",")
    num = num + 1
num = 1
while num < 11:
    if num!= 7:
        print(num)
    num = num + 1

4.输出1-100内的所有奇数。

num = 1
while num < 101:
    if num%2 == 1:
        print(num)
    num = num + 1

5.输出1-100内的所有偶数。

num = 1
while num < 101:
    if num%2 == 0:
        print(num)
    num = num + 1

6.求1-100的所有整数的和。

sum = 0
num = 1
while num < 101:
    sum = sum + num
    num = num + 1
print(sum)

7.输出10-1所有整数。

num = 10
while num > 0:
    print(num)
    num = num -1

思考题:求 1~100所有整数这样的结果:1 - 2 + 3 - 4 + 5 - 6 = ?

num = 1
expression = ""  # 用于构建表达式字符串

# 处理第一个数字(1)
expression += "1"

# 使用 while 循环遍历从2到100(包括100)
num = 2
while num <= 100:
    if num % 2 == 0:  # 如果num是偶数,则减去该数
        expression += f" - {num}"
    else:  # 如果num是奇数,则加上该数
        expression += f" + {num}"

    num += 1  # 增加num以继续下一个数字

print(f"表达式是: {expression}")
1.3 break

break ,用于在while循环中帮你终止循环

示例:

print("开始")
while True:
    print("1")
    break
    print("2")
print("结束")

#输出
开始
1
结束

示例:

print("开始")
while True:
    print("红旗飘飘")
    break
    print("剑鞘出")
print("结束")

#输出
开始
红旗飘飘
结束

示例:

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

#输出
开始
1
2
3
...
100
结束

示例:

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

#输出
开始运行系统
>>>用户名 
>>>密码 
正确,登录成功
系统结束
不正确,一直循环

所以以后写代码的时候,结束循环可以通过条件判断break关键字,两种方式使用无好坏之分,只要能实现系统功能。

1.4 continue

continue,在循环中用于,结束本次循环,开始下一次循环。

print("开始")
while True:
    print("1")
    continue
    print("2")
    print("3")
print("结束")

#输出
1
1
1
...

示例:

print("开始")
while True:
    print("红旗飘飘")
    continue
    print("剑鞘出")
print("结束")
#输出
红旗飘飘
红旗飘飘
红旗飘飘
...

示例:

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

#输出
开始
1
2
3
5
6
...

示例:

print("开始")
i = 1
while True:
    if i == 4:
        i = i + 1
        continue  # 当 i == 4 时,则执行 i = i + 1,将 i 增加到 5 ,跳过本次循环的剩余部分,直接进入下一次循环
    print(i)
    i = i + 1
    if i == 101:
        break
print("结束")
    
#输出
开始
1
2
3
5
6
...
100
结束

breakcontinue 的区别
  • break:完全终止循环,跳出循环体,执行循环后面的代码。
  • continue:跳过当前循环体中剩余的语句,直接进入下一次循环(如果还有下一次的话)

注意:

  • break 只能用于循环内部,不能单独出现在函数、类或其他非循环结构中。
  • 如果在一个嵌套循环中使用 break,它只会终止最内层的那个循环,而不会影响外层循环。
1.5 while else

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

while 条件:
    代码
else:
    代码
while False:
    pass
else:
    print(123)
#输出
123
num = 1
while num < 5:
    print(num)
    num = num + 1
else:
    print(666)
    
#输出
1
2
3
4
666
num = 1
while num < 5:
    print(num)
    num = num + 1
    break
else:
    print(666)
    
#输出
1

2.字符串格式化

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

% , format(学习推荐) , f

2.1 %
2.1.1基本格式化操作
name = input("输入名字:")
text = "我是%s,今年18岁" %name
print(text)

#输出
输入名字:佩奇
我是佩奇,今年18岁

常用↓:方式便捷

name = "佩奇"
age = 18

# text = "我是%s,今年%s岁" %("佩奇", 18)
# text = "我是%s,今年%d岁" %(name, age)
text = "我是%s,今年%s岁" %(name, age)
print(text)

#输出
我是佩奇,今年18岁
text = "%(name)s 你什么时候过来?" %{"name":"Alex"}
print(text)

#输出
Alex 你什么时候过来?
text = "%(name)s 你什么时候过来? %(user)s 在不在" % {"name": "Alex", "user": "peiqi"}
print(text)

#输出
Alex 你什么时候过来? peiqi 在不在
text = "我叫%s,今年%d岁"
data = text % ("佩奇", 20)
print(data)

#输出
我叫佩奇,今年20岁
2.1.2百分比
text = "%s,这个电影我下载了99%%了,居然断网了。" %"兄弟"
print(text)

#输出
兄弟,这个电影我下载了99%了,居然断网了。

一旦字符串格式化中出现百分比的显示,一定要加%%来实现输出%。

2.2 format(初学推荐)
text = "我叫{0},今年18岁".format("peiqi")
# text = "我叫{0},今年{1}岁".format("peiqi", "18")
print(text)

#输出
我叫peiqi,今年18岁
text = "我叫{0},今年{1}岁,真是姓名是{0}".format("peiqi", "18")

#字符串格式化可以复用!
#输出
我叫peiqi,今年18岁,真是姓名是peiqi

在python,{}中不加0默认第一个是{0}

text = "我叫{},今年{}岁,真是姓名是{}".format("peiqi", "18", "peiqi")
print(text)

#输出
我叫peiqi,今年18岁,真是姓名是peiqi
text = "我叫{n1},今年{age}岁,真是姓名是{n1}".format(n1="peiqi", age="18")
print(text)

#输出
我叫peiqi,今年18岁,真是姓名是peiqi
text = "我叫{0},今年{1}岁"
data = text.format("peiqi", 666)
print(data)

#输出
我叫peiqi,今年666岁
2.3 f

到python3.6版本,更便捷。

action = "跑步"
text = f"他喜欢{action}, 跑完步就出汗"
print(text)

#输出
他喜欢跑步, 跑完步就出汗
name = "佩奇"
age = 18
text = f"他的名字叫{name},今年{age}岁"
print(text)

#输出
他的名字叫佩奇,今年18岁
# 在python3.8引入特殊功能
name = "佩奇"
text = f"他的名字叫{name}, 今年{19 + 2 =}岁"
print(text)

#输出
他的名字叫佩奇, 今年19 + 2 =21岁
# 进制转换
二进制(b)
八进制(o)
十六进制(x)

#例如:
v2 = f"他今年{22:#b}岁"
print(v2)
#输出
他今年0b10110岁
#理解f功能
name = "alex"
text = f"我是{name.upper()}, 我喜欢跑步。"
print(text)

#输出
我是ALEX, 我喜欢跑步。

3.运算符

  • 算数运算符
加法运算符(+):将两个数相加。
减法运算符(-):将两个数相减。
乘法运算符(*):将两个数相乘。
除法运算符(/):将两个数相除,结果为浮点数。
取余运算符(%):返回两个数相除的余数。
幂运算符(**):返回一个数的指数值。
取整运算符(//):返回两个数相除的整数部分。
a = 10
b = 3

print(a + b)    # 13
print(a - b)    # 7
print(a * b)    # 30
print(a / b)    # 3.3333333333333335
print(a % b)    # 1
print(a ** b)   # 1000
print(a // b)   # 3
  • 比较运算符

用于比较两个值之间的关系,返回True或False。 Python中的比较运算符包括:==、!=、>、<、>=、<=。

等于运算符(==):   判断两个值是否相等。
不等于运算符(!=): 判断两个值是否不相等。
大于运算符(>):    判断左侧值是否大于右侧值。
小于运算符(<):    判断左侧值是否小于右侧值。
大于等于运算符(>=):判断左侧值是否大于等于右侧值。
小于等于运算符(<=):判断左侧值是否小于等于右侧值。
a = 10
b = 3

print(a == b)   # False
print(a != b)   # True
print(a > b)    # True
print(a < b)    # False
print(a >= b)   # True
print(a <= b)   # False

注意:python不支持<>

  • 赋值运算符

用于将值分配给变量。 Python中的赋值运算符包括:=、+=、-=、*=、/=、%=、**=、//=

等于运算符(=):将右侧的值分配给左侧的变量。
加等于运算符(+=):将左侧变量的值加上右侧的值,并将结果分配给左侧变量。
减等于运算符(-=):将左侧变量的值减去右侧的值,并将结果分配给左侧变量。
乘等于运算符(*=):将左侧变量的值乘以右侧的值,并将结果分配给左侧变量。
除等于运算符(/=):将左侧变量的值除以右侧的值,并将结果分配给左侧变量。
取余等于运算符(%=):将左侧变量的值取余右侧的值,并将结果分配给左侧变量。
幂等于运算符(**=):将左侧变量的值的指数幂等于右侧的值,并将结果分配给左侧变量。
取整等于运算符(//=):将左侧变量的值除以右侧的值,向下取整,并将结果分配给左侧变量。
 
c = a + b 将 a + b的运算结果赋值给为c
c += a  等效于 c = c + a
c -= a  等效于 c = c - a
c *= a  等效于 c = c * a
c /= a  等效于 c = c / a
c %= a  等效于 c = c % a
c **= a  等效于 c = c ** a
c //= a  等效于 c = c // a
num = 1
while num < 100:
    print(num)
    # num = num + 1
    num += 1
    
  • 成员运算,例如是否包含

成员运算符用于检查序列中是否存在指定的值。 Python中的成员运算符包括:innot in

in :如果在指定序列中找到值 返回 True

not in:如果在指定序列中不能找到值 返回 False

a = [1, 2, 3, 4, 5]

print(3 in a)       # True
print(6 not in a)   # True
  • 逻辑运算符,例如:且或非

逻辑运算符:用于组合条件语句。 Python中的逻辑运算符包括:andornot
与运算符(and):如果两个条件都为True,则返回True。
或运算符(or):如果两个条件中至少一个为True,则返回True。
非运算符(not):如果条件为False,则返回True,否则返回False。

a = 3
b = 2
c = 1

print(a > b and a > c)  # True
print(a > b or a < c)   # True
print(not(a > b and a > c)) # False

3.1 运算符优先级
  • 算数运算符 优先级 大于 比较运算符
if 2 + 10 > 11:
    print("真")
else:
    print("假")
  • 比较运算符 优先级 大于 逻辑运算符
if 1>2 and 2<10:
    print("成立")
else:
    print("不成立")
    
#输出
不成立
  • 逻辑运算符内部 三个优先级 not>and>or
#1 表示 True
# not 1 = false
if not 1 and 1>2 or 3 == 8: #False and False 结果是 False
    print("真")
else:
    print("假")

从高到低:加减乘除>比较>not and or

3.2 面试题

逻辑运算中: and or

v1 = name == "alex" and pwd == "123"
# v1 = True and False

if name == "alex" and pwd == "123":
    pass
v2 = "peiqi" and "alex"

# 第一步:将and前后的值转换为布尔值True and True
# 第二步:判断本次操作取决于谁? 由于前面的是True,所以本次逻辑判断取决于后面的值。
# 所以,后面的值等于多少最终结果就是多少。 v2 = "alex"

v3 = "" and "alex"
# 第一歩:将and前后的值转换为布尔值False and True,""空字符串,代表False
# 第二步:判断本次操作取决于谁? 由于前面的是False,所以本次逻辑判断取决于前面的值。
# 所以,前面的值等于多少最终结果就是多少。 v3 = ""

v4 = 1 or 8
# 第一步:将or前后的值转换为布尔值True or True
# 第二步:判断本次操作取决于谁? 由于前面的是True,所以本次逻辑判断取决于前面的值。
# 所以,前面的值等于多少最终结果就是多少。 v4 = 1

v5 = 0 or 8
# 第一步:将or前后的值转换为布尔值False or True
# 第二步:判断本次操作取决于谁? 由于前面的是False,所以本次逻辑判断取决于后面的值。
# 所以,后面的值等于多少最终结果就是多少。 v5 = 8
练习题
v1 = 1 or 2 # v1 = 1
v2 = -1 or 3 # v2 = -1
v3 = 0 or -1 # v3 = -1
v4 = 0 or 100 # v4 = 100
v5 = "" or 10 # v5 = 10
v6 = "peiqi" or "" #v6 = "peiqi"

print(v1,v2,v3,v4,v5,v6)
#输出
1 -1 -1 100 10 peiqi
v1 = 4 and 8 # v1 = 8
v2 = 0 and 6 # v2 = 0
v3 = -1 and 88 # v3 = 88
v4 = "" and 7 # v4 = ""
v5 = "佩奇" and "" # v5 = ""
v6 = "" and 0 # v6 = ""
v7 = 0 and "中国" # v7 = 0

print(v1, v2, v3, v4, v5, v6, v7)
#输出
8 0 88    0
# 面对多个 or 和 and 先计算 and 再 计算 or

v1 = 0 or 4 and 3 or 7 or 9 and 6  # v1 = 3
# v1 = 0 or 3 or 7 or 6
# v1 = 3

v2 = 8 or 3 and 4 or 2 and 0 or 9 and 7
# v2 = 8 or 4 or 0 or 7
# v2 = 8

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

v3 = not 8 or 3 and 4 or 2
# v3 = false or 4 or 2
# v3 = 4
总结
  1. while循环语句
while 循环用于在条件为 True 时重复执行代码块,直到条件变为 False
  1. break和continue关键字的作用
# break 和 continue 关键字的作用

break:立即退出最近的循环(for 或 while),继续执行循环之后的代码。
continue:跳过当前循环的剩余部分,直接进入下一次循环。
  1. 三种字符串格式化的方式
name = "Alice"

print("Hello, %s!" % name)
print("Hello, {}!".format(name))
print(f"Hello, {name}!")
  1. 基本运算符(逻辑运算符涉及的相关面试题)
# 逻辑运算符:and、or、not
and:两个操作数都为 True 时返回 True,否则返回 False。
or:任意一个操作数为 True 时返回 True,否则返回 False。
not:反转布尔值,not True 返回 False,not False 返回 True
作业:
  1. 判断下列逻辑语句的True,False
v1 = 1 > 1 or 3 < 4 or (4 > 5 and 2 > 1 and 9 > 8) or 7 < 6
# v1 = False or True or (False and True and True) or False
# v1 = False or True or False or False
# v1 = True
print(v1)  # 输出:True

v2 = not 2 > 1 and 3 < 4 or (4 > 5 and 2 > 1 and 9 > 8) or 7 < 6
# v2 = not True and True or (False and True and True) or False
# v2 = False and True or False or False
# v2 = False or False or False
# v2 = False
print(v2)  # 输出:False
  1. 实现用户登录系统,并且要支持连续三次输错之后直接退出,并且在每次输错误时显示剩余错误次数(提示:使用字符串格式化)
count = 3
while count > 0:
    count -= 1
    user = input("请输入用户名:")
    pwd = input("请输入密码:")

    if user == "alex" and pwd == "123":
        print("登录成功!")
        break
    else:
        message = f"用户名或密码输入错误,请重新输入。剩余次数:{count}"
        print(message)
else:
    print("系统已退出。")
  1. 猜年龄游戏

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

count = 3
while count > 0:
    count -= 1
    num = input("请输入年龄:")
    if num == "66":
        print("恭喜猜对了。")
        break
    else:
        print(f"剩余次数{count}")
print("退出")
  1. 猜年龄游戏升级版本

    要求:允许用户最多尝试3次,每尝试3次后,如果没猜对,就问用户是否继续玩,如果回答Y,就继续让猜3次,以此往复,如果回答N,就退出程序,如果猜对了,就直接退出。

count = 3
while count > 0:
    count -= 1
    num = input("请输入年龄:")
    if num == "66":
        print("恭喜猜对了。")
        break
    else:
        print("猜错了,"f"剩余次数{count}")

    if count == 0:
        print("请问是否继续玩?回答Y:继续,回答N:退出")
        choice = input("请输入Y/N:")
        
        if choice == "Y":
            count = 3
            continue
        elif choice == "N":
            break
        else:
            print("内容输入错误")
            break
print("程序结束")
       
posted @ 2024-12-30 22:19  LUO-YY  阅读(54)  评论(0)    收藏  举报