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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值