zoukankan      html  css  js  c++  java
  • python-study-05

    一:复习

    上节课复习:
    1、if判断
    语法1:
    if 条件:
    code1
    code2
    code3
    if 条件:
    code1
    code2
    code3
    if 条件:
    code1
    code2
    code3

    语法2:
    if 条件:
    code1
    code2
    code3
    else:
    code1
    code2
    code3

    语法3:
    if 条件1:
    pass
    elif 条件2:
    pass
    elif 条件3:
    pass
    else:
    pass
    强调:
    if的多分支或自上而下一次匹配条件,一旦匹配成功就立刻执行该条件
    下的自代码块,其余条件即便是成立也再去执行了

    语法4:
    if 条件1:
    if 条件2:
    pass

    2、while循环(又称条件循环)
    语法:
    while 条件:
    code1
    code2
    code3

    day=1
    while day < 11:
    默写
    听课
    写作业
    晚自习
    day+=1


    while+break:终止本层循环
    while+continue:终止本次循环,直接进入下一次循环
    while+else:else会在循环结束后进行一次判定,如果循环期间没有被break打断,就应该执行else的代码

    while循环的嵌套:
    while 条件1:
    while 条件2:
    break
    break

    tag=True
    while tag:
    while tag:
    if 条件:
    tag=False

    3、for循环
    语法:
    l=[1,2,3]
    for i in l:
    print(i)


    for i in range(1,5,2):#1 3
    print(i)

    l=['a','b','c']
    for i in range(len(l)): #range(3)
    print(i,l[i])

    for+break
    for+continue
    for+else

    今日内容:
    数据类型+内置方法

    二:数字类型

    一:基本使用
    1 int用途:年龄 号码 等级...

    2 定义方式
    age=10 #age=int(10)
    x=int('1111') # int只能将纯数字的字符串转成十进制的整型
    print(type(x))

    3 常用操作+内置的方法
    算数运算,比较运算

    二:该类型总结
    1 存一个值or存多个值
    只能存一个值
    age=10
    age

    2 有序or无序
    没有有序无序这么一说

    3 可变or不可变
    可变不可变类型总结:
    可变指的是改变原值,即在原值基础上进行修改
    可变类型的底层原理:在id不变的情况下,值可以改变
    不可变类型的底层原理:值改变,id也跟着变
    int是不可变数据类型
    age=10
    print(id(age))
    age=11
    print(id(age))

    了解(**):
    长整型Long,只有在python2中才有长整型号
    复数complex
    x=1-2j
    print(x.real)
    print(x.imag)
    print(type(x))

    一:基本使用
    1 用途:薪资 身高 体重

    2 定义方式
    salary=3.1 #salary=float(3.1)
    n=float('3.1')

    3 常用操作
    算数运算 比较运算

    #二:该类型总结
    1 存一个值or存多个值
    只能存一个值

    2 有序or无序
    没有有序无序这么一说

    3 可变or不可变
    float是不可变类型
    x=3.1
    print(id(x))
    x=3.2
    print(id(x))

    三:字符串类型

    一:基本使用
    1 用途: 描述性质的数据,比如人的名字,单个爱好,地址

    2 定义方式
    name='egon' #name=str('egon')
    x=str(1)
    y=str(1.1)
    z=str([1,2,3])
    n=str({'a':1})
    print(type(x))
    print(type(y))
    print(type(z))
    print(type(n))
    转成str类型

    3 常用操作+内置的方法
    优先掌握的操作(*****):
    1、按索引取值(正向取+反向取) :只能取
    msg='hello world'
    print(type(msg[5]))
    print(msg[-1])
    msg[2]='A' 会报错,无法修改

    2、切片(顾头不顾尾,步长)
    msg='hello world'
    print(msg[1:5],type(msg[1:5]))
    print(msg[6:-1])
    print(msg[6:11])
    print(msg[6:])
    print(msg[6::2])
    了解(**)

    print(msg[0:])
    print(msg[::-1])
    msg='hello world'
    print(msg[-3:-6:-1])
    print(msg[6:9:-1]) 不合法,会报错

    3、长度len
    msg='hello world'
    print(len(msg))

    4、成员运算in和not in
    print('SB' in 'my name is alex,alex is SB')
    print('alex' in 'my name is alex,alex is SB')
    print('egon' not in 'my name is alex,alex is SB') # 推荐
    print(not 'egon' in 'my name is alex,alex is SB')


    5、移除空白strip
    name=' e gon '
    print(name.strip(' '))
    print(name.strip())
    name='****A*e*gon****'
    print(name.strip('*'))

    name='****egon****'
    print(name.lstrip('*'))
    print(name.rstrip('*'))
    pwd=input('>>: ').strip() #pwd='123 ' 用于与用户交互移除空白字符
    if pwd == '123':
    print('login successful')

    msg='cccabcdefgccccc'
    'c'
    print(msg.strip('c'))

    print('*-=egon *&^'.strip('-= *&^'))

    6、切分split
    msg='egon:18:male:180:160'
    l=msg.split(':')
    print(l)
    print(l[3])

    7、循环(迭代)
    msg='hello world'
    for x in msg:
    print(x)

    需要掌握的操作(****)
    1、strip,lstrip,rstrip
    2、lower,upper
    name='EoN'
    print(name.lower())

    name='egonN'
    print(name.upper())

    3、startswith,endswith
    print('alex is SB'.startswith('alex'))
    print('alex is SB'.endswith('B'))

    4、format的三种玩法
    print('my name is %s my age is %s' %('egon',18))
    print('my name is {name} my age is {age}'.format(age=18,name='egon')) # 可以打破位置的限制,但仍能指名道姓地为指定的参数传值

    print('my name is {} my age is {}'.format('egon',18))
    print('my name is {0} my age is {1} {1} {1} {1}'.format('egon',18))

    5、split,rsplit
    info='egon:18:male'
    print(info.split(':',1))

    print(info.split(':',1)) #['egon','18:male']
    print(info.rsplit(':',1)) #['egon:18','male']

    6、join:只能将元素全为字符串的列表拼成一个大的字符串
    info='egon:18:male'
    l=info.split(':')
    print(l)
    new_info='-'.join(l)
    print(new_info)

    num=['a','b','c']
    ':'.join(num) #'a'+':'+'b'+':'+'c'

    num=[1,2,'c']
    ':'.join(num) #1+':'+2+':'+'c'

    7、replace
    msg='my name is wupeiqi,wupeiqi is SB'
    print(msg.replace('wupeiqi','Pig',1))
    print(msg)

    8、isdigit
    print('111.1'.isdigit())
    print('1111'.isdigit())

    AGE=73
    age=input('>>: ').strip() #age='asdfasdf'
    if age.isdigit():
    age=int(age)
    if age > AGE:
    print('too big')
    elif age < AGE:
    print('too small')
    else:
    print('you got it')
    else:
    print('必须输入数字啊傻叉')

    其他操作(了解即可)(**)
    1、find,rfind,index,rindex,count
    msg='my name is alex,alex is hahaha'
    print(msg.find('alex'))
    print(msg.find('SB')) #找不到会返回-1

    print(msg.index('alex'))
    print(msg.index('SB')) # 找不到index会报错

    print(msg.find('alex',0,3))

    print(msg.count('alex'))
    print(msg.count('alex',0,15))

    2、center,ljust,rjust,zfill
    print('info egon'.center(50,'-'))
    print('info egon'.ljust(50,'-'))
    print('info egon'.rjust(50,'-'))
    print('info egon'.zfill(50))

    3、expandtabs
    print('a b c'.expandtabs(1))

    4、captalize,swapcase,title
    print('my name is egon'.capitalize())
    print('my Name Is egon'.swapcase())
    print('my name is egon'.title())

    5、is数字系列
    num1=b'4' #bytes
    num2=u'4' #unicode,python3中无需加u就是unicode
    num3='壹' #中文数字
    num4='Ⅳ' #罗马数字

    isdigit():bytes,unicode
    print(num1.isdigit())
    print(num2.isdigit())
    print(num3.isdigit())
    print(num4.isdigit())

    isdecimal():unicode
    print(num2.isdecimal())
    print(num3.isdecimal())
    print(num4.isdecimal())

    isnumberic;unicode,中文,罗马
    print(num2.isnumeric())
    print(num3.isnumeric())
    print(num4.isnumeric())

    6、is其他
    print('abasdf123123'.isalnum())
    print('asdfasdf'.isalpha())
    print('egon'.islower())
    print('ABC'.isupper())

    print(' '.isspace())
    print('My Name Is Egon'.istitle())


    #二:该类型总结
    1 存一个值or存多个值
    只能存一个值

    2 有序or无序(是否有索引)
    有序

    3 可变or不可变
    不可变 值变,id变

    name='egon'
    print(id(name))
    name='alex'
    print(id(name))

    四:列表类型

    作用:多个装备,多个爱好,多门课程,多个女朋友等

    定义:[]内可以有多个任意类型的值,逗号分隔
    my_girl_friends=['alex','wupeiqi','yuanhao',4,5] #本质my_girl_friends=list([...])

    l=list('hello') #类型转化 list内只能跟能够被for循环遍历的数据类型
    print(l)
    l=list({'a':1,'b':2}) #字典只能取key
    print(l)

    优先掌握的操作:
    1、按索引存取值(正向存取+反向存取):即可存也可以取 值变,id不变
    names=['alex','wxx','lxx','egon']
    print(id(names))
    names[0]='ALEX'
    print(names)
    print(id(names))

    2、切片(顾头不顾尾,步长)
    names=['alex','wxx','lxx','egon']
    print(names[0:3])

    3、长度
    names=['alex','wxx','lxx','egon']
    print(len(names))

    4、成员运算in和not in
    names=['alex','wxx','lxx','egon',4]
    print(4 in names)


    5、追加
    names=['alex','wxx','lxx','egon']
    names.append('cxx1')
    names.append('cxx2')
    names.append('cxx3')
    print(names)

    6、删除
    names=['alex','wxx','lxx','egon']
    del names[2]
    print(names)

    7、循环
    names=['alex','wxx','lxx','egon']
    for name in names:
    print(name)

    需要掌握的操作(****)
    names=['alex','wxx','lxx','egon',4,3.1]
    names.insert(1,'SB')
    print(names)

    names=['alex','wxx','lxx','egon',4,3.1]
    res=names.remove('wxx') # 单纯的删掉,是按照元素的值去删除,没有返回值
    print(res)
    print(names)


    names=['alex','wxx','lxx','egon',4,3.1]
    res=names.pop(1) #拿走一个值,是按照索引去删除,有返回值
    print(names)
    print(res)

    names=['alex','wxx','lxx','egon',4,3.1]
    print(names.pop())
    print(names.pop())

    names=['alex','wxx','lxx','lxx','egon',4,3.1]
    print(names.count('lxx'))

    print(names.index('lxx'))

    names.clear()
    print(names)

    x=names.copy()
    print(x)

    names.extend([1,2,3])
    print(names)

    names.reverse()
    print(names)

    names=[1,10,-3,11]
    names.sort(reverse=True)
    print(names)


    二:该类型总结
    1 存一个值or存多个值
    可以存多个值,值都可以是任意数据类型

    2 有序or无序
    有序
    3 可变or不可变
    可变

    l=['a','b']
    print(id(l))
    l[0]='A'
    print(id(l))

    五:今日作业

    字符串与列表练习
    一、有列表:names=['lxx','alex','wupeiqi','yuanhao',4,5]
    #1、取出列表倒数第三个值
    #2、从列表中切出子列表['alex','yuanhao']
    #3、计算列表的长度
    #4、编写程序,判断列表中是否存在'egon',如果不存在则追加一个元素'egon'
    #6、编写程序,判断列表中如果存在'alex',则列表中的'alex'改成'alex_SB',如果存在'egon'则删除
    #1.1
    names=['lxx','alex','wupeiqi','yuanhao',4,5]
    print(names[-3])
    
    #1.2
    names=['lxx','alex','wupeiqi','yuanhao',4,5]
    print(names[1:4:2])
    
    #1.3
    names=['lxx','alex','wupeiqi','yuanhao',4,5]
    print(len(names))
    
    #1.4
    names=['lxx','alex','wupeiqi','yuanhao',4,5]
    if 'egon' not in names:
        print('不存在egon')
        names.append('egon')
    
    #1.6
    names=['lxx','alex','wupeiqi','yuanhao',4,5]
    if 'alex' in names:
        print('存在alex')
        i = names.index('alex')
        names[i] = alex_SB
    if 'egon' in names:
        print('存在egon')
        names.remove('egon')
    View Code

    二、有如下列表,请采用两种方式取出列表中的值
    my_girl_friends=['alex','wupeiqi','yuanhao',4,5]
    方式一:依赖索引,请写出while循环与for循环两种实现方式
    方式二:不依赖索引
    my_girl_friends = ['alex', 'wupeiqi', 'yuanhao', 4, 5]
    count = 0
    while count < len(my_girl_friends):
        print(my_girl_friends[count])
        count += 1
    
    my_girl_friends = ['alex', 'wupeiqi', 'yuanhao', 4, 5]
    for i in range(len(my_girl_friends)):
        print(my_girl_friends[i])
    
    my_girl_friends = ['alex', 'wupeiqi', 'yuanhao', 4, 5]
    for i in my_girl_friends:
        print(i)
    View Code

    三、说明白,数字、字符串、列表之间能否比较大小,如果能,请说明白各种情况下的比较方式
    # 数字只能与数字比较,不能与字符串或列表比较大小
    # 字符串只能与字符串比较,元素之间对应比较,不能与数字或列表比较大小
    # 列表只能与列表比较,元素之间对应比较,不能与数字或字符串比较大小
    View Code

    四、介绍字符串格式化的两种方式%与format,然后详细介绍format的三种使用方法
    print('my name is %s my age is %s' %('egon',18))
    
    print('my name is {name} my age is {age}'.format(age=18,name='egon'))
    
    print('my name is {} my age is {}'.format('egon',18))
    
    print('my name is {0} my age is {1} {1} {1} {1}'.format('egon',18))
    View Code

    五、链式赋值
    a=b=c=d=10
    print('a={0} b={1} c={2} d={3}'.format(a,b,c,d))
    View Code
       六、交叉赋值
    x=1
    y=2
    x,y=y,x
    print('x={0}  y={1}'.format(x,y))
    View Code
       七、变量的解压
    x,*_,y=[1,2,3,4,5,6]
    print('x={} y={}'.format(x,y))
    View Code

    八、取倒数第一个字符
    name='egon你好'
    name='egon你好'
    print(name[-1])
    View Code

    九、切片:切出用户名alex
    msg='alex:123:admin'
    msg = 'alex:123:admin'
    print(msg[:4])
    View Code

    十、统计msg的字符个数
    msg='alex say my name is sb'
    msg = 'alex say my name is sb'
    print(len(msg))
    View Code
       
    十一、成员运算in和not in
    有如下列表,打印名字中包含sb的用户的信息(名字、年龄)
    students=[
    {'name':'alex_sb','age':18},
    {'name':'egon','age':18},
    {'name':'wupeiqi_sb','age':18},
    ]

    students = [
        {'name': 'alex_sb', 'age': 18},
        {'name': 'egon', 'age': 18},
        {'name': 'wupeiqi_sb', 'age': 18},
    ]
    for i in range(len(students)):
        if 'sb' in students[i]['name']:
            print(students[i]['name'],students[i]['age'])
    View Code

    十二、编写用户认证程序,程序后台存放的用户名为'egon',密码为'123'
    要求用户输入用户名密码,认证通过则打印登陆成功,其中用户输入的用户名左右两侧可能携带多个控制,
    请做相应的处理
    uname_from_db = 'egon'
    pwd_from_db = '123'
    uname_from_inp = input('username>>: ').strip()
    pwd_from_inp = input('password>>: ')#.strip()
    if uname_from_db == uname_from_inp and pwd_from_db == pwd_from_inp:
        print('login success')
    else:
        print('login failure')
    View Code

    十三、将下述字符串格式化,得到一个列表
    user='root:x:0:0::/root:/bin/bash'
    user = 'root:x:0:0::/root:/bin/bash'
    l_user = user.split(':')
    print(type(l_user))
    print(l_user)
    View Code

    十四、请用两种方式循环出字符串包含的每个字符
    msg='egon你好'
    msg = 'egon你好'
    for i in msg:
        print(i)
    
    msg = 'egon你好'
    count = 0
    while count < len(msg):
        print(msg[count])
        count += 1
    View Code
     
       十五:字符串练习
    # 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
    name = " aleX"
    # 1) 移除 name 变量对应的值两边的空格,并输出处理结果
    # 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果

    # 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果

    # 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
    # 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。
    # 6) 将 name 变量对应的值变大写,并输出结果

    # 7) 将 name 变量对应的值变小写,并输出结果

    # 8) 请输出 name 变量对应的值的第 2 个字符?
    # 9) 请输出 name 变量对应的值的前 3 个字符?
    # 10) 请输出 name 变量对应的值的后 2 个字符?

    # 11) 请输出 name 变量对应的值中 “e” 所在索引位置?

    # 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
    #1
    name = " aleX"
    print(name.strip())
    
    #2
    name = " aleX"
    print(name.startswith('al'))
    
    #3
    name = " aleX"
    print(name.endswith('X'))
    
    #4
    name = " aleX"
    print(name.replace('l','p'))
    
    #5
    name = " aleX"
    print(name.split('l'))
    
    #6
    name = " aleX"
    print(name.upper())
    
    #7
    name = " aleX"
    print(name.lower())
    
    #8
    name = " aleX"
    print(name[1])
    
    #9
    name = " aleX"
    print(name[:3])
    
    #10
    name = " aleX"
    print(name[-2:])
    
    #11
    name = " aleX"
    print(name.find('e'))
    
    #12
    name = " aleX"
    x = len(name) - 1
    print(name[:x])
    View Code

    十六:有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量

    data = ['alex', 49, [1900, 3, 18]]
    name,age,_ = data
    bir_year,bir_mon,bir_day  = data[2]
    print(name,age,bir_year,bir_mon,bir_day)
    View Code

    十七:for循环练习
    1、使用嵌套for循环打印99乘法表(补充:不换行打印的方法为print('xxxx',end=''))
    提示:
    for i in range(...):
    for j in range(...):
    ...
    2、使用嵌套for循环打印金字塔,金字塔层数为5层,要求每一个空格、每一个*都必须单独打印
    *
    ***
    *****
    *******
    *********

    提示:
    一个for循环套两个小的for循环,两个小的for一循环,一个控制打印空格,一个控制打印*

    思路参考:http://www.cnblogs.com/linhaifeng/articles/7133167.html#_label14
    # 17.1
    for i in range(1,10):
        for j in range(1,i+1):
            print('{}*{}={}'.format(i,j,i*j),end=' ')
        print()
    
    # 17.2
    max_level = input('请输入层数: ')
    max_level = int(max_level)
    for current_level in range(1, max_level + 1):
        for space in range(max_level - current_level):
            print(' ', end='')
        for asterisk in range(2 * current_level - 1):
            print('*', end='')
        print()
    View Code

    十八:购物车程序
    #需求:
    启动程序后,先认证用户名与密码,认证成功则让用户输入工资,然后打印商品列表的详细信息,商品信息的数据结构可以像下面这种格式,也可以自己定制
    goods=[
    {'name':'mac','price':20000},
    {'name':'lenovo','price':10000},
    {'name':'apple','price':200},
    {'name':'tesla','price':1000000},

    ]

    失败则重新登录,超过三次则退出程序
    允许用户根据商品编号购买商品
    用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    可随时退出,退出时,打印已购买商品和余额

  • 相关阅读:
    并发编程三、线程可见性的底层原理
    并发编程二、线程的安全性和线程通信
    并发编程一、多线程的意义和使用
    Java进程监控
    分布式消息通信之RabbitMQ_Note
    分布式消息通信之RabbitMQ_02
    分布式消息通信之RabbitMQ_01
    分布式消息通信之RabbitMQ Tutorials
    SpringMVC重点分析
    Apache POI 4.0.1版本读取本地Excel文件并写入数据库(兼容 xls 和 xlsx)(五)
  • 原文地址:https://www.cnblogs.com/xujinjin18/p/9112750.html
Copyright © 2011-2022 走看看