while..else ;for;range; 基本数据类型的内置函数

while + esle

    #当while循环正常循环结束后,会执行else中的代码块。如果遇到break结束循环,else中的代码将不会运行。
    ```
    结构:
      while 条件:
          循环代码
      else:
          代码块
    ```
    #如:
     i= 1
     while i < 10:
         print('i')
     else:
         print('循环正常结束了')

死循环和while的嵌套

      #在python中我们千万不要写纯数学计算的死循环,这样会让电脑的性能严重下降,严重时可能会损坏电脑硬件。
      #如:
      i = 100
      while True:
          i *= 100

      #while的嵌套
      i = j = 1
      while i < 9:
          while j < 9:
              print(i * j)
              j += 1
          i += 1
      

for循环的基本使用和补充

    #结构
    ```
    for 变量名 in 循环体:#字符串、列表、字典、元组、集合
        循环代码
    ```
    # 循环字典(特殊):循环字典只能获取到字典的key value无法直接获取
    userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'}
    for i in userinfo_dict:
        print(i)
    #这时i拿出的值为'username','age'和'gender',并不会取出value
    #而且当取出的数据类型为字典和集合时都是无序的,字典看着是有序的实际上是pycharm处理过的,让我们看着是有序的。
    
    for i in [1,2,3,4]:
        print(i)
    #for循环和while循环一样都可以使用break ,continue和else,用法一致
    for i in [1,2,3]:
        if i == 2:
            break
    
    for i in [1,2,3]:
        if i == 2:
            continue


    for i in [1,2,3]:
        print(i)
    else:
        print('循环正常结束')

for循环的嵌套

for循环的嵌套在我高中的时候就已经接触到了,在信息技术这门课中我们学的是VB,我们会学习到用双重循环去排序如:冒泡排序和选择排序。虽然VB和python是两个完全不一样的东西,但是代码编写的思想是一样的。

    #冒泡排序:
    data = [2,43,5,67,8,9,0,-1]
    for i in range(len(data)):
        for j in range(i+1,len(data)):
            if data[i] > data[j]:
                data[i],data[j] = data[j],data[i]
    print(data)

    #选择排序:
    data = [2,43,5,67,8,9,0,-1]
    for i in range(len(data)):
    key = i
    for j in range(i+1,len(data)):
        if data[key] > data[j]:
            key = j
    if key != i:
        data[i],data[key] = data[key],data[i]
    print(data)
    
    

range关键字

range方法在python2和python3中有所区分在:

    python2中range是直接产生一个列表 元素很多的情况下比较占用空间在python2中有一个xrange 其实就是python3里面的range
    在python3中range不占空间但是可以取出很多数据,在python3中就只有一个range了


    #python2代码:
    L=range(0,10)
    print(L)
    结果:
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    #python3输入相同的代码其结果:
    range(0, 10)


    #打印出0-99
    for i in range(100):#range是这样的一个区间[ , )  ,能取得到前面但取不到后面,或者可以说是顾头不顾尾
        print(i)
     
    #range(起始位置,末尾位置,步长)
    #只有一个数字,默认从0开始
    for i in range(10):
        print(i)
    #写2 个数字,自定义起始位置,
    for i in range(1, 10):
        print(i)
    #写3个数字,第三个数字表示步长,默认不写步长为1
    for i in range(1, 10, 2):
        print(i)

基本数据类型及内置方法

int和float

	1.类型转换
 	2.进制数转换
# 类型转换
# res = int('123')  # 将int方法执行之后的结果赋值给变量res
# print(res, type(res))  # int
# int('11.11') #11会舍去小数,保留整数
# int('abc')#运行后会报错
"""int方法只能转换纯数字的字符串"""
# 将十进制转换成其他机制
# print(bin(100))  # 0b1100100    二进制(0b开头)
# print(oct(100))  # 0o144        八进制(0o开头)
# print(hex(100))  # 0x64         十六机制(0x开头)
# 将其他机制转换成十进制
print(int('0b1100100', 2))
print(int('0o144', 8))
print(int('0x64', 16))

float浮点型
	1.类型转换
    res = float('11.11')
    print(res, type(res))  # 11.11
    res = float('11')
    print(res, type(res))  # 11.0整数进行float强制转换时会强制加上小数
    float('abc')#运行后会报错

字符串内置方法(重要,常用到)

1.类型转换
	str可以转换所有基本数据类型
    	print(str(11), type(str(11)))
        print(str(11.11), type(str(11.11)))
        print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
        print(str({'name': '123'}), type(str({'name': '123'})))
        print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))
        print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))
        print(str(True), type(str(True)))
  
# print(str(11), type(str(11)))
# print(str(11.11), type(str(11.11)))
# print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
# print(str({'name': '123'}), type(str({'name': '123'})))
# print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))
# print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))
# print(str(True), type(str(True)))


s1 = 'hello world'
# 1.索引取值
# print(s1[0])


# 2.切片操作
# print(s1[2:4])  # 顾头不顾尾


# 3.步长
# print(s1[2:9:1])  # 第三个参数是步长 默认是1 依次获取
# print(s1[2:9:2])  # 间隔一个取一个
# 索引取切片扩展(默认从左向右)
# print(s1[-1])  # 获取最好一个字符
# print(s1[-1:-5:-1])  # dlro  第三个参数还可以控制索引的方向
# print(s1[-5:-1])  # worl


# 4.统计字符串中字符的个数
# print(len(s1))  # 11


# 5.成员运算
# print('ll' in s1)


# 6.移除字符串首位指定的字符(使用频率较高)
# name = '  春游去动物园  '
# print(len(name))#10
# res = name.strip()  # 默认移除字符串首尾的空格
# print(res, len(res)) #春游去动物园 6


# 7.按照指定的字符切割字符串
# data = '春游去动物园|123|春游'
# print(data.split('|'))  # ['春游去动物园', '123', '春游']
# name, pwd, hobby = data.split('|')  # 解压赋值
# print(data.split('|', maxsplit=1))  # ['春游去动物园', '123|春游']
# print(data.rsplit('|', maxsplit=1))  # ['春游去动物园|123', '春游']
"""split方法切割完字符串之后是一个列表"""

今日作业

编写一个用户登录程序:
1.要求最多尝试失误三次 过期自动提示并可重置尝试次数
2.用户登录成功之后进入内部循环 用户输入什么就打印什么 并给用户提供一个结束程序的特殊指令
3.获取用户输入的用户名和密码可以处理首尾空格
4.用户的用户名和密码使用变量存储 通过程序获取用户名和密码比对
data = 'jason|123'


data = 'jason|123'
name,pword = data.split('|')
i = 0
while i < 3:
    username = input('请输入用户名:  ').strip()
    password = input('请输入密码:  ').strip()
    if (username == name) and (password == pword):
        print('登入成功')
        while True:
            str = input('请输入要执行的操作(exit退出):  ')
            if str == 'exit':
                break
            else:
                print(str)
        break
    else:
        i += 1
        print('账号或密码错误')
        if i == 3:
            is_agin = input('是否继续尝试(Y/N):  ')
            if is_agin == 'Y':
                i = 0
            else:
                break
posted @ 2022-03-08 15:56  春游去动物园  阅读(117)  评论(0编辑  收藏  举报