song1002  

【一】while循环

【1】什么是循环结构

  • 循环结构是一种程序控制结构,用于反复执行一组语句,直到满足某个条件为止。
  • 循环结构使得程序可以更有效地重复执行某段代码,节省了编写重复代码的工作。

[1]语法

while condition: # while 是循环的关键字。
    # 循环体      #  condition是循环的条件,当条件为真时,循环体会一直执行。

[2]使用

count = 0

while count < 5:
    print("Current count:", count)
    count += 1

print("Loop finished!")


# Current count: 0
# Current count: 1
# Current count: 2
# Current count: 3
# Current count: 4
# Loop finished!

【2】案例

# 设定好用户年龄,用户通过输入猜测的年龄进行匹配
# 最大尝试次数:用户最多尝试猜测3次
# 最大尝试次数后:如3次后,问用户是否还想继续玩
## 如果回答Y或y,就再给3次机会,提示【还剩最后三次机会】
### 3次都猜错的话游戏结束
## 如果回答N或n,游戏结束!
# 如果格式输入错误,提示【输入格式错误,请重新输入:】
# 如果猜对了,游戏结束!
age = 18
count = 0
while count < 3:
    age_input = int(input("请猜测年龄: >>>>>>"))
    if age_input > age:
        print("太大了")
    elif age_input < age:
        print("太小了")
    else:
        print("刚刚好")
        break
    count = count + 1
    if count == 3:
        again = input("是否要继续 y/n:")
        if again not in ["y","n"]:
            print("程序错误")
            break
        if again == "y":
            count = 0
        else:
            print("下次再来玩")
            break

【二】for 循环

【1】语法

for variable in sequence:
    # 循环体
# for是循环的关键字。
# variable是循环变量,它会在每次循环中取 `sequence` 中的一个值。
# sequence 是一个序列,可以是列表、元组、字符串等。

【2】使用

fruits = ["apple", "banana", "cherry"]

for fruit in fruits:
    print("Current fruit:", fruit)
    
    
# Current fruit: apple
# Current fruit: banana
# Current fruit: cherry

【三】退出循环(break)

【1】语法

while condition:  
    # 循环体3    
    if some_condition:4        
        break  # 退出循环

【2】使用

count = 0

while count < 5:
    print(count)
    if count == 3:
        break  # 当 count 等于 3 时,退出循环
    count += 1

【3】案例

username = "Dream"
password = "123"
# 记录错误验证的次数
count = 0
while count < 3:
    inp_name = input("请输入用户名:")
    inp_pwd = input("请输入密码:")
    if inp_name == username and inp_pwd == password:
        print("登陆成功")
        break # 用于结束本层循环
    else:
        print("输入的用户名或密码错误!")
        count += 1

【4】while多层循环嵌套-break

username = "Dream"
password = "123"
count = 0
while count < 3:  # 第一层循环
    inp_name = input("请输入用户名:")
    inp_pwd = input("请输入密码:")
    if inp_name == username and inp_pwd == password:
        print("登陆成功")
        while True:  # 第二层循环
            cmd = input('>>: ')
            if cmd == 'quit':
                break  # 用于结束本层循环,即第二层循环
            print('run <%s>' % cmd)
        break  # 用于结束本层循环,即第一层循环
    else:
        print("输入的用户名或密码错误!")
        count += 1

【四】退出循环(continue)

【1】语法

while condition:
    # 循环体
    if some_condition:
        continue  # 跳过当前循环,继续下一次循环

【2】使用

count = 2
while count < 5:4    
    count += 15   
    if count == 3:6      
        continue # 当count 等于 3 时,跳过当前循环,继续下一次循环
    print(count)       
  • break 用于完全退出循环,而 continue 用于跳过当前循环的剩余部分,直接进入下一次循环

【五】无限循环(死循环)

  • 有时候,我们需要程序在满足某个条件时一直执行,这就需要用到无限循环。
  • 最简单的无限循环可以通过 while 语句实现,条件永远为真。
while True:
    print("This is an infinite loop!")
  • 在实际编程中,我们可能会在无限循环中加入某个条件来实现根据需要退出循环的逻辑
while True:
    user_input = input("Enter 'exit' to end the loop: ")
    if user_input.lower() == 'exit':
        break
    else:
        print("You entered:", user_input)
  • 这个例子中,用户需要输入 'exit' 才能结束循环。这样就可以灵活地在需要的时候退出无限循环。

【六】标志位

【1】语法

flag = True  # 初始化标志位

while flag:
    # 循环体
    if some_condition:
        flag = False  # 修改标志位,退出循环

【2】使用

flag = True  # 初始化标志位

while flag:
    user_input = input("请输入:")
    if user_input == 'exit':
        flag = False  # 当用户输入 'exit' 时,修改标志位,退出循环
    else:
        print("用户输入:", user_input)

【3】案例(while循环嵌套+tag标志位)

# 登录认证练习
# 用列表套字典存储用户数据
# 有一个输入框输入用户名和密码 ,增加重试次数 让他一直重试知道正确位置
# 正确的话就断掉了

user = [{"name": "zhangsan","password": "123"},
        {"name": "song","password" : "456"},
        {"name": "zhang","password" : "789"}]
tage = True
while tage:
    username_input = input("请输入用户名: >>>")
    userpassword_input = input("请输入密码: >>>")
    for users in user:
         users_username = users["name"]
         users_password = users["password"]
         if  username_input == users_username:
             if userpassword_input == users_password:
                print("登录成功")
                tage = False
                break
             else:
                print("登录失败")
                continue

【七】循环分支(else)

  • 在while循环的后面
    • 我们可以跟else语句
  • 当while 循环正常执行完并且中间没有被break 中止的话
    • 就会执行else后面的语句
count = 0
while count <= 5 :
    count += 1
    print("Loop",count)
else:
    print("循环正常执行完啦")
print("-----out of while loop ------")
输出
Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
循环正常执行完啦   #没有被break打断,所以执行了该行代码
-----out of while loop ------
  • 如果执行过程中被break
    • 就不会执行else的语句
count = 0
while count <= 5 :
    count += 1
    if count == 3:
        break
    print("Loop",count)
else:
    print("循环正常执行完啦")
print("-----out of while loop ------")
输出
Loop 1
Loop 2
-----out of while loop ------ #由于循环被break打断了,所以不执行else后的输出语句

【八】range关键字

【1】语法

for i in range(stop):
    # 循环体
for i in range(start, stop):
    # 循环体
for i in range(start, stop, step):
    # 循环体

【2】使用

for i in range(5):
    print(i)
# 输出:
# 0
# 1
# 2
# 3
# 4
for i in range(2, 6):
    print(i)
# 输出:
# 2
# 3
# 4
# 5
for i in range(1, 10, 2):
    print(i)
# 输出:
# 1
# 3
# 5
# 7
# 9

【3】步长

# [1]语法
range(start, stop, step)
# range 关键字
# 帮我们生成指定区间内的整数列表
# 顾头不顾尾

# [2]使用
for i in range(1, 10, 2):
    print(i)
# 输出:
# 1
# 3
# 5
# 7
# 9

【4】案例

while 1:
    score = input("请输入您的成绩>>")  # "100"

    if score.isdigit():
        score = int(score)  # 100
        if score > 100 or score < 0:
            print("您的输入有误!")
        elif score > 90:
            print("成绩优秀")
        elif score > 70:  # else if
            print("成绩良好")
        elif score > 60:
            print("成绩及格")
        else:
            print("成绩不及格")
    else:
        print("请输入一个数字")

【九】整数类型的内置方法

# 整型 (int)
# num = '123'
# 【1】类型强转 -- 符合 int类型格式的字符串可以强转成整数类型
# print(num, type(num))  # 123 <class 'str'>
# print(int(num), type(int(num)))  # 123 <class 'int'>
# score = input(":》》》")
# print(score, type(score))
# 浮点型(float)
# score = int(score)
# print(score, type(score))
# 【2】十进制数转为 其他进制
# print(bin(999))  # 0b1111100111 -- 0b 开头 最大只能到 1
# print(oct(999))  # 0o1747 -- 0o 开头就是八进制 --- 八进制
# print(hex(999))  # 0x3e7 -- 0x 开头就是十六进制 有英文字符的情况就是十六进制
# (1)十进制转八进制 0o
# print(oct(999))  # 0o 1747

# (2)十进制转十六进制 0x
# print(hex(999))  # 0x 3e7

# (3)十进制转二进制 0b
# print(bin(999))  # 0b 1111100111

# (4)其他进制数转换为十进制数 , int也支持转换进制
# num = '0b1111100111'
# print(int(num, 2))
# num = '0o1747'
# print(int(num, 8))
# num = '0x3e7'
# print(int(num, 16))

# 【2】浮点数的内置方法
# salary = 100.01
# 强制类型转换 转换符合浮点数的字符串 可以将整数转换为 浮点数
# num = 100
# print(float(num))
# num = '100.111'
# print(float(num))

# 【3】判断当前类型是否是整数或者浮点数
num1 = b'4'  # <class 'bytes'>

num2 = '4'  # unicode,Python 3 中不需要在字符串前加 'u'

num3 = '四'  # 中文数字

num4 = 'Ⅳ'  # 罗马数字

# 判断当前字符串类型是否是指定的数据格式

# (1)判断当前是否为数字类型 isdigit
# print(num1.isdigit())
# print(num2.isdigit())
# print(num3.isdigit())
# print(num4.isdigit())

# (2)判断是否是小数点类型
# print(num1.isdecimal())
# num = 100.01
# print(num.isdecimal())
# print(num2.isdecimal())

# age = input("请输入年龄 :>>>> ")
# if age.isdigit():
#     age = int(age)
#     print(type(age))
# else:
#     print(f"语法不规范")

【十】字符串内置方法

# 【一】字符串的语法格式
# name = "dream"


# 【二】内置方法 --- 优先记住和学习
# 【1】字符串拼接
# (1)直接字符串 + 法
# name = "dream"
# name_one = "hope"
# print(name + name_one)

# (2).join字符串拼接
# print(','.join(name_one))

# 【2】索引取值
# 正索引 从 0开始取值
# 负索引从 -1 开始取值
# 索引取值可以但是不能修改

# 【3】切片 给定一个起始位置和结束位置 截取这之间的元素
# 切片也是顾头不顾尾
# name = "dream"
# 正常语法:[起始索引位置:截止索引位置]
# print(name[2:4])
# 不正常语法: [起始索引位置:截止索引位置:步长]
# 步长;隔几个去一个
# print(name[0:4:2])

# print(name[0:-1:-2])

# 负索引切片 遵循坐标轴的规范 左小右大
# print(name[-4:-1])

# 【4】计算长度
# print(len(name))

# 【5】成员运算
# print("d" in name)

# 【6】去除空格
# username = input(">>>>")
# 去除手动产生的空格
# username = username.strip()
# if username == "dream":
#     print(username)
# 默认是去除两侧的空格
# 去除两边的特殊字符
# name = " dream "
# print(name.strip(' '))
# name = "$dream$"
# print(name.strip("$"))
# # 去除指定一侧的特殊字符
# # right :右侧
# print(name.rstrip("$"))
# # left 左侧
# print(name.lstrip("$"))

# 【7】切分字符串
# username_password = "dream|521"
# 参数是按照什么去切 切完以后这个编制就没了
# username, password = username_password.split("|")
# print(username, password)

# name = "dream 521"
# print(name.split())

# 【8】遍历
# 就是将里面的每一个元素看一遍
# name = 'dream'
# for i in name:
#     print(i)

# range : 顾头不顾尾
# for i in range(len(name)):
#     print(name[i])

# 【9】重复当前元素
# print("*" * 10)

# 【10】大小写转换
# name = 'Dream'
# print(name.upper())
# print(name.lower())
#
# name = "dream"
# print(name.islower())
# print(name.isupper())

# 【11】判断当前字符串以 .. 开头或者结尾
# name = "dream"

# 判断开头
# print(name.startswith("d"))
# 判断结尾
# print(name.endswith("m"))

# 【11】格式化疏忽语法
#  %s %d占位
name = "dream"
age = 18

print("my name is %s " % name)
print("my name is %s ,my age is %s" % (name, age))

# format
# 按位置传参数
print('my name is {} ,my age is {}'.format(name, age))
# 按关键字传参数
print('my name is {name_location} ,my age is {age_location}'.format(name_location=name, age_location=age))
# f+ {}
print(f"my name is {name} . my age is {age}")

# 【12】join拼接
print(','.join("drema"))
print('|'.join(["drema","521"]))
print('|'.join(("drema","521")))

# 【三】内置方法 -- 了解
posted on 2024-04-02 19:18  全宇宙最帅  阅读(96)  评论(0)    收藏  举报