while循环补充
1 while循环补充
1.1 for循环
for 循环 : 遍历可迭代类型_(能索引取值的也输入可迭代类型)
for 变量名 in 字符串:
循环代码
#for 主要用于遍历,字符串中有几个字符,for就会循环几次
name = "dream"
for a in name: #a是自定义的一个变量
print(a)
#这个for循环了5次,因为name这个字符串中有五个字符
#第一次循环的时候a的值是d
#第二次循环的时候a的值是r
#第三次循环的时候a的值是e
#第四次循环的时候a的值是a
#第五次循环的时候a的值是m
name = [1,2,3,4]
for a in name: #a是自定义的一个变量
print(a)
# 1 2 3 4 依次竖着向下
同理
# name = (4, 1, 2)
# name = {4, 5, 6}也一样
# name = {"username": "dream"}
#字典遍历只会出来字典里的key:wusename
#若是想取出字典key里面的
name = {"username": "dream"}
for a in name:
print(a)
print(name[a]) #dream
1.2死循环(while True)
# 无法退出当前循环
# 不要在代码中出现死循环;会造成当前CPU飙升
while True:
print(1)
# 【二】可以在while缓缓重定义一个标志位
tag = True
while tag:
username = input(":>>>")
if username == "dream":
tag = False
1.3 range
帮我们生成指定区间内的整数列表
# 在 2.7 版本及之前range(1, 5) 会给你返回一个 [1,2,3,4]
# 3.6 之后 优化掉了
print(range(1, 5), type(range(1, 5)))
range(1, 5) <class 'range'> # ----》 生成器对象
我们用几个取几个,range生成位置默认是从数字0开始到指定位置-1,也可理解为骨头不顾尾。
for i in range(5)
print(i) # 0 1 2 3 4
2 while循环练习
# 登录认证练习
# 用列表套字典存储用户数据
# 有一个输入框输入用户名和密码 ,增加重试次数 让他一直重试直到正确为止
# 正确的话就断掉了
# 登录认证练习
# 【一】定义一个列表 + 字典存储用户信息
user_data_list = [
{"username": "dream", "password": "521"},
{"username": "hope", "password": "369"},
{"username": "opp", "password": "963"},
]
【二】循环开始校验用户名和密码
tag_true = True
while tag_true:
username_input = input("username :>>>> ")
password_input = input('password :>>>> ')
# 【三】校验当前用户名是否存在于上述列表中
for user_data_dict in user_data_list:
# user_data_dict : {'username': 'dream', 'password': '521'}
username_exist = user_data_dict.get("username")
# dream
password_exist = user_data_dict.get("password")
# 521
if username_input == username_exist:
# 再校验密码
if password_exist != password_input:
print(f"当前用户 {username_exist} 密码错误!")
else:
print(f"当前用户 {username_exist} 登录成功!")
tag_true = False
user_data_list = [
{"dream": "521"},
{"hope": "369"},
{"opp": "963"},
]
# 【二】循环开始校验用户名和密码
tag_true = True
while tag_true:
username_input = input("username :>>>> ")
password_input = input('password :>>>> ')
# 【三】校验当前用户名是否存在于上述列表中
for user_data_dict in user_data_list:
# user_data_dict : {"dream": "521"}
password = user_data_dict.get(username_input)
# 有值 521
if password and password == password_input:
print("登陆成功")
tag_true = False
break
elif password and password != password_input:
print(f"密码错误")
个人示例
user_list = [{"name":"aaa","password":1}
,{"name":"bbb","password":2}
,{"name":"ccc","password":3}
,{"name":"ddd","password":4}
]
tag_true = True
while tag_true:
user_input = input("请输入账号")
password_input = int(input("请输入密码"))
for user in user_list:
if user_input == user["name"]:
if password_input == user["password"]:
print(f"登陆成功")
tag_true = False
break
else:
print("密码错误")
break
else:
print("账号不存在")
3 整数类型的内置方法
3.1数据类型的内置方法
八大基本数据类型,为了更加方便操作每一个数据类型,于是开发者就将可以通过繁琐操作达到目的的代码封装成一个方法,帮我们快速写代码
3.2 数字类型
3.2.1 整数类型
print(1 + 1)
num = 1 # 2
print(num.__add__(2)) #3
(1)类型强制转换
可将符合整数格式的字符串转换成整数类型
num = '1'
print(int(num)) # 1
# 只能转换符合整数类型格式的字符串
# print(int('a'))
(2)进制转换
1.十进制转八进制 0o
print(oct(999)) # 0o 1747
2.十进制转十六进制 0x
print(hex(999)) # 0x 3e7
3.十进制转二进制 0b
print(bin(999)) # 0b 111110011
4.其他进制数转换为十进制数 , int也支持转换进制
num = '0b1111100111'
print(int(num, 2)) #999
num = '0o1747'
print(int(num, 8)) #999
num = '0x3e7'
print(int(num, 16)) #999
3.2.3 浮点数的内置方法
salary = 100.01
# 强制类型转换 转换符合浮点数的字符串 可以将整数转换为 浮点数
num = 100
print(float(num)) # 100.0
num = '100.111'
print(float(num)) # 100.111
3.2.4 判断当前类型是否是整数或者浮点数
num1 = b'4' # <class 'bytes'>
print(type(num1))
num2 = '4' # unicode,Python 3 中不需要在字符串前加 'u'
num3 = '四' # 中文数字
num4 = 'Ⅳ' # 罗马数字
# 判断当前字符串类型是否是指定的数据格式
(1)判断当前是否为数字类型 isdigit
print(num1.isdigit()) # True
print(num2.isdigit()) # True
print(num3.isdigit()) # False
print(num4.isdigit()) # False
(2)判断是否是小数点类型 isdecimal (用于字符串)
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"语法不规范")
4 字符串内置方法(必会)
4.1字符串的语法格式
name = "dream"
4.2 内置方法 --- 优先记住和学习
4.2.1 字符串拼接
(1)直接字符串 + 法
name = "dream"
name_one = "hope"
print(name + name_one) # dreamhope
(2).join字符串拼接
print(','.join(name_one)) # h,o,p,e
4.2.2 索引取值
正索引 从 0开始取值
负索引从 -1 开始取值
索引取值可以但是不能修改
4.2.3 切片
给定一个起始位置和结束位置 截取这之间的元素, 切片也是顾头不顾尾
name = "dream"
正常语法:[起始索引位置:截止索引位置]
print(name[2:4]) # ea
不正常语法: [起始索引位置:截止索引位置:步长]
步长;隔几个去一个
print(name[0:4:2]) #de
print(name[0:-1:-2]) #de
负索引切片 遵循坐标轴的规范 左小右大
print(name[-4:-1]) #rea
4.2.4 计算长度
name = "dream"
print(len(name)) #5
4.2.5 成员运算
name = "dream"
print("d" in name) #True
4.2.6 去除空格
username = input(">>>>")
#去除手抖产生的空格
username = username.strip()
if username == "dream":
print(username) # 输入dream+五个空格 输出dream 没空格
默认是去除两侧的空格
去除两边的特殊字符
name = " dream "
print(name.strip(' '))
name = "$dream$"
print(name.strip("$")) #dream
去除指定一侧的特殊字符
right :右侧
print(name.rstrip("$")) #$dream
left 左侧
print(name.lstrip("$")) #dream$
4.2.7 切分字符串
username_password = "dream|521"
# 参数是按照什么去切 切完以后这个编制就没了
print(username_password.split("|")) #['dream','521']
username, password = username_password.split("|")
print(username, password) #dream 521
name = "dream 521"
print(name.split()) #['dream', '521']
4.2.8 遍历
# 就是将里面的每一个元素看一遍
name = 'dream'
for i in name:
print(i)
#d
#r
#e
#a
#m
range : 顾头不顾尾
for i in range(len(name)):
print(name[i]) #由于len(name)是5 然后range取值是从0开始 0-4正好是dream
#d
#r
#e
#a
#m
4.2.9 重复当前元素
print("*" * 10) #**********
4.2.10 大小写转换
name = 'Dream'
print(name.upper()) # DREAM
print(name.lower()) #dream
name = "dream"
print(name.islower()) #False
print(name.isupper()) #False (因为Drean是大小写混用)
4.2.11 判断当前字符串以 .. 开头或者结尾
name = "dream"
# 判断开头
print(name.startswith("d")) #True
# 判断结尾
print(name.endswith("m")) #True
4.2.12 格式化输出语法
# %s %d占位
name = "dream"
age = 18
print("my name is %s " % name) #my name is dream
print("my name is %s ,my age is %s" % (name, age))
#my name is dream,my age is 18
# format
# 按位置传参数
print('my name is {} ,my age is {}'.format(name, age))
#my name is dream,my age is 18
# 按关键字传参数
print('my name is {name_location} ,my age is {age_location}'.format(name_location=name, age_location=age))
#my name is dream,my age is 18
# f+ {}
print(f"my name is {name} . my age is {age}")
#my name is dream,my age is 18
4.2.13 join拼接
print(','.join("drema")) #d,r,e,a,m
print('.'.join(["drema","521"])) #dream.521
print('|'.join(("drema","521"))) #dream|521
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY