• python 全栈开发,Day2(in,while else,格式化输出,逻辑运算符,int与bool转换,编码)


    一、in的使用

    in 操作符用于判断关键字是否存在于变量中

    a = '男孩wusir'
    print('男孩' in a)

    执行输出: True

    in是整体匹配,不会拆分匹配。

    a = '男孩wusir'
    print('男孩sir' in a)

    执行输出:False

    比如评论的敏感词汇,会用到in 和not in

    comment = input('请输入你的评论:')   
    if '苍井空' in comment:          
        print('您输入的有敏感词汇,请重新输入')

    执行输出

    请输入你的评论:苍井空
    您输入的有敏感词汇,请重新输入

    二、while else的使用

    while else 如果循环被break打断,程序不会走else

    count = 1
    while True:
        print(count)
        if count == 3:break
        count += 1
    else:
        print('循环正常完毕')

    执行输出
    1
    2
    3

    count = 1
    falg = True
    while falg:
        print(count)
        if count == 3:
            falg = False
        count += 1
    else:
        print('循环正常完毕')

    执行输出:
    1
    2
    3
    循环正常完毕

     三、格式化输出

    比如用户输入信息后,输出一段话

    msg = '我叫唐僧,今年25岁,爱好念经'  

    第一种替换方式

    #% 占位符 s str 字符串 d digit 数字
    name = input('请输入你的姓名:')
    age = input('请输入你的年龄:')
    hobby = input('请输入你的爱好:')
    msg = '我叫%s,今年%d岁,爱好%s' % (name,int(age),hobby)
    print(msg)

    执行输出:

    请输入你的姓名:唐僧
    请输入你的年龄:25
    请输入你的爱好:念经
    我叫唐僧,今年25岁,爱好念经

    第二种替换方式
    定义一个字典

    dic = {'name':'老男孩','age':51,'hobby':'无所谓'}

    完整代码如下:

    dic = {'name':'jack','age':51,'hobby':'无所谓'}
    msg = '我叫%(name)s,今年%(age)d岁,爱好%(hobby)s' % dic
    print(msg)
    

    执行输出:

    我叫jack,今年51岁,爱好无所谓

    格式化输出,就是做固定模板填充

    第三种替换方式

    name = input('请输入你的姓名:')
    age = input('请输入你的年龄:')
    msg = '我叫%s,今年%d岁,学习进度为1%' % (name,int(age))
    print(msg)

    执行报错
    ValueError: invalid literal for int() with base 10: 'sf'

    #在格式化输出中单纯的显示% 用%% 解决

    name = input('请输入你的姓名:')
    age = input('请输入你的年龄:')
    msg = '我叫%s,今年%d岁,学习进度为1%%' % (name,int(age))
    print(msg)

    执行输出

    请输入你的姓名:zhang
    请输入你的年龄:21
    我叫zhang,今年21岁,学习进度为1%

    第四种替换方式

    name = input('请输入你的姓名:')
    age = input('请输入你的年龄:')
    msg = '我叫{},今年{}岁,学习进度为1%'.format(name,int(age))
    print(msg)
    

    执行输出

    请输入你的姓名:xiao
    请输入你的年龄:24
    我叫xiao,今年24岁,学习进度为1%

    四、逻辑运算符

    针对逻辑运算的进一步研究:

      1,在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

    and or not
    第一种:前后都是比较运算
    优先级: () > not > and > or
    同一个优先级,从左至右依次计算
    false and 任何条件,都是false
    true and false,结果为false

    print(1 > 2 and 3 < 4)

    执行输出: False

    print(1 > 2 and 3 < 4 and 3 > 2 or 2 < 3)

    执行输出: True

    在or中,只要有真,结果必定为真。

    False or True 结果为True

    print(1 and 2)

    执行输出: 2

    print(1 and 2)
    print(0 and 2)

    执行输出:
    2
    0

    第二种:前后都是数字运算

    x or y , x为真,值就是x,x为假,值是y;

    x and y, x为真,值是y,x为假,值是x。

    非0的数字,都是真

    print(1 or 3)
    print(2 or 3)
    print(0 or 3)
    print(-1 or 3)

    执行输出:
    1
    2
    3
    -1

    第三种,混合

    print(1 > 2 or 3 and 4)

    执行输出: 4

    print(1 > 2 or 3 and 4)
    print(2 or 2 > 3 and 4)

    执行输出:
    4
    2

    五、数据类型的转换

    int与布尔值的转换
    int --> bool 非0即True,0为False
    bool --> int True 1 False 0

    print(int(True))

    执行输出:1

    print(int(True))
    print(int(False))
    print(bool(100))
    print(bool(0))

    执行输出:
    1
    0
    True
    False

    六、编码

    编码很重要,总会遇到编码的问题

    1,发电报:滴滴滴滴 实际是高低电平。
    密码本:

    今 0000 0001
    天 0000 0101
    喝 0000 0011
    酒 0000 1100
    去 0001 1010
    呀 0001 0001

    0010010 1000011 1100101 010001

    2,计算机在存储,和传输的时候, 01010101
    初期密码本:
    asiic 包含数字,英文,特殊字符。八位
    01000001 01000010 01000011 A B C
    8位 = 1 byte 表示一个字符。
    ascii最左1位都是0,为了拓展使用的。

    ASCII码表里的字符总共有256个
    前128个为常用的字符如运算符
    后128个为 特殊字符是键盘上找不到的字符

    万国码unicode,将所有国家的语言包含在这个密码本。
    初期:16位,两个字节,表示一个字符。
    A : 00010000 00010010
    中: 00010010 00010010
    升级:32位,四个字节,表示一个字符。
    A : 00010000 00010010 00010000 00010010
    中: 00010010 00010010 00010010 00010010
    32位资源浪费。

    升级:utf-8。最少用8位(一个字节),表示一个字符。
    英文:a :00010000 用8位表示一个字符。
    欧洲:00010000 00010000 16位两个字节表示一个字符。
    亚洲 中 :00010000 00010000 00010000 24位,三个字节表示一个字符。

    utf-16 不常用,最少用16位

    gbk:国标
    只包含:英文中文。
    英文:a :00010000 8位,一个字节表示一个字符。
    中文:中:00010000 00010000 16位,两个字节表示一个字符。
    gb2312 也是国标的一种

    单位换算
    8 bit = 1 byte
    1024 byte = 1 kb
    1024 kb = 1 MB
    1024 MB = 1 GB
    1024 GB = 1 TB

    作业:

    1、判断下列逻辑语句的True,False.
    1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    2)not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6


    2、求出下列逻辑语句的值。
    1),8 or 3 and 4 or 2 and 0 or 9 and 7
    2),0 or 2 and 3 and 4 or 6 and 0 or 3


    3、下列结果是什么?
    1)、6 or 2 > 1
    2)、3 or 2 > 1
    3)、0 or 5 < 4
    4)、5 < 4 or 3
    5)、2 > 1 or 6
    6)、3 and 2 > 1
    7)、0 and 3 > 1
    8)、2 > 1 and 3
    9)、3 > 1 and 0
    10)、3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2


    4. 简述变量命名规范
    5. name = input(“>>>”) name变量是什么数据类型?
    6. if条件语句的基本结构?
    7. while循环语句基本结构?
    8. 写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
    9. ⽤户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)
    10. 简述ascii、unicode、utf-8编码关系?
    11. 简述位和字节的关系?
    12. “⽼男孩”使⽤UTF-8编码占⽤⼏个字节?使⽤GBK编码占⼏个字节?
    13. 制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名字和爱好进⾏任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
    14.  等待用户输入内容,检测用户输入内容中是否包含敏感字符?如果存在敏感字符提示“存在敏感字符请重新输入”,并允许用户重新输入并打印。敏感字符:"小粉嫩"、"大铁锤"

    15. 单⾏注释以及多⾏注释?

    16. 简述你所知道的Python3和Python2的区别?

    17. 看代码书写结果:
    a = 1>2 or 4<7 and 8 == 8
    print(a)

    18.continue和break区别?

    答案:

    1、判断下列逻辑语句的True,False.
    1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6

    print(1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) 
    

    执行输出:True

    过程解析:

    1.先判断and部分

    4 > 5 and 2 > 1 and 9 > 8

    进一步分解结果为
    False and True and True
    最终结果为False

    在继续左右2边的判断
    1 > 1 or 3 < 4 or True or 7 < 6

    进一步结果为
    False or True or True or False

    最终结果为True 。因为在or判断中,只要有True,结果必定为True

    2)not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6

    print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)
    

    执行输出:False


    2、求出下列逻辑语句的值。
    1),8 or 3 and 4 or 2 and 0 or 9 and 7

    print(8 or 3 and 4 or 2 and 0 or 9 and 7) 
    

    执行输出:8


    2),0 or 2 and 3 and 4 or 6 and 0 or 3

    print(0 or 2 and 3 and 4 or 6 and 0 or 3)
    

    执行输出:4


    3、下列结果是什么?

    1)、6 or 2 > 1
    2)、3 or 2 > 1
    3)、0 or 5 < 4
    4)、5 < 4 or 3
    5)、2 > 1 or 6
    6)、3 and 2 > 1
    7)、0 and 3 > 1
    8)、2 > 1 and 3
    9)、3 > 1 and 0
    10)、3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2

    print(6 or 2 > 1)  
    print(3 or 2 > 1)  
    print(0 or 5 < 4)  
    print(5 < 4 or 3)  
    print(2 > 1 or 6)  
    print(3 and 2 > 1) 
    print(0 and 3 > 1) 
    print(2 > 1 and 3) 
    print(3 > 1 and 0) 
    print(3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2) 

    执行输出:

    6
    3
    False
    3
    True
    True
    0
    3
    0
    2

    4. 简述变量命名规范

    1. 变量是由数字,字母,下划线,任意组合。
    2. 变量不能以数字开头。
    3. 不能是python中的关键字。
    4. 不能太长,不能是中文,要有描述性。
    5. 官方推荐: 下划线命名法,单词之间用下划线连接。

    5. name = input(“>>>”) name变量是什么数据类型?

    字符串类型

    6. if条件语句的基本结构?

    #第一种
    if 条件:
        结果
        
    #第二种 
    if 条件:
        结果
    else:
        结果
    
    #第三种
    if 条件:
        结果
    elif 条件:
        结果
    ...
    
    #第四种
    if 条件:
        结果
    elif 条件:
        结果
    ...
    else:
        结果
    
    #第五种
    if 条件:
        if 条件:
            结果
        elif 条件:
            结果
    elif 条件:
        结果
    ...
    else:
        结果
    

    7. while循环语句基本结构?

    while 条件:
        结果
    

    8. 写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?

    count = 0
    the_sum = 0
    while count < 99:
        count += 1
        if count == 88:
            continue
        if (count % 2) == 0:
            the_sum -= count
        else:
            the_sum += count
    
    print(the_sum)
    

    执行输出: 138


    9. ⽤户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)

    username = 'xiao'
    password = '123'
    max = 3
    i = 0
    while i < max:
        i += 1
        name = input('请输入用户名:')
        pwd = input('请输入密码:')
        if name == username and pwd == password:
            print('登陆成功')
            break
        else:
            print('用户名或密码错误,还剩余{}次机会!'.format(max-i))

    执行输出:

    请输入用户名:fds
    请输入密码:fds
    用户名或密码错误
    剩余2 次机会!
    请输入用户名:34
    请输入密码:343
    用户名或密码错误
    剩余1 次机会!
    请输入用户名:35
    请输入密码:35
    用户名或密码错误
    剩余0 次机会!

    10. 简述ascii、unicode、utf-8编码关系?

    ascii 是最早美国用的标准信息交换码,把所有的字母大小写,各种符号用 二进制来表示,共有256种,同时加入拉丁文等字符,1bytes代表一个字符。

    Unicode是为了统一世界各国语言的不同,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间,

    可以用在内存处理中,兼容了utf-8,gbk,ASCII。

    utf-8 为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,

    特点;节省空间,速度慢,用在硬盘数据传输,网络数据传输,相比硬盘和网络速度,体现不出来。


    11. 简述位和字节的关系?

    位:二进制位(bit)是计算机存储信息的基本单位,代表1个二进制数位,其值为0或1。
    字节:8个连续的二进制位为一个字节,可以存放1个西文字符的编码。


    12. "⽼男孩"使⽤UTF-8编码占⽤⼏个字节?使⽤GBK编码占⼏个字节?

    在utf-8中,一个中文字符占用3个字节。在GBK中,一个中文字符占用2个字节

    所以答案为9和6


    13. 制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名字和爱好进⾏任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx

    name = input('请输入你的姓名:')
    addres = input('请输入你的地点:')
    hobby = input('请输入你的爱好:')
    msg = '''
    敬爱可亲的{}
    最喜欢在{}
    地⽅⼲{}
    '''.format(name,addres,hobby)
    print(msg)

    执行输出:

    请输入你的姓名:zhang
    请输入你的地点:家里
    请输入你的爱好:看片
    
    敬爱可亲的zhang
    最喜欢在家里
    地⽅⼲看片

    14.  等待用户输入内容,检测用户输入内容中是否包含敏感字符?如果存在敏感字符提示“存在敏感字符请重新输入”,并允许用户重新输入并打印。敏感字符:"小粉嫩"、"大铁锤"

    第一步,先实现关键字匹配

    keyword = ["⼩粉嫩","⼤铁锤"]
    comment = input('请输入评论:')
    for filter_word in keyword:
        if filter_word in comment:
            print('error!')
            break
    else:
        print('ok!')
    

    第2步,实现无限输入并检查敏感词

    keyword = ["⼩粉嫩","⼤铁锤"]
    while True:
        comment = input('请输入评论:')
        for filter_word in keyword:
            if filter_word in comment:
                print('评论含有敏感词,请重新输入!')
                break
        else:
            print('提交成功!')
            break

    执行输出:

    请输入评论:⼩粉嫩
    评论含有敏感词,请重新输入!
    请输入评论:dg
    提交成功!

    15. 单⾏注释以及多⾏注释?

    单行注释:使用符号#
    多行注释:使用符号""" """ 和''' '''

    16. 简述你所知道的Python3和Python2的区别?

    1.源码风格不一样
    python2 源码混乱,重复代码较多。
    python3 源码规范,优美清新简单。


    2.print方法有区别
    python3的print方法,必须要加括号


    3.默认编码不一样
    python 3x 默认编码:utf-8
    python 2x 默认编码: ascii


    4.input不同
    python 2x: raw_input()
    python 3x: input()

    17. 看代码书写结果: 
    a = 1>2 or 4<7 and 8 == 8 
    print(a)

    先执行and部分4<7 and 8 == 8 ,4<7 结果为True 。8 == 8 结果为True 。那么and部分的结果为True

    那么就剩下1 > 2 or True,最终结果为 True

    18.continue和break区别?

    breck:结束循环
    continue:结束本次循环,继续下一次循环。

    Day3默写代码:
    Bit,Bytes,Kb,Mb,Gb,Tb之间的转换关系。

    8 bit = 1 byte
    1024 byte = 1 kb
    1024 kb = 1 MB
    1024 MB = 1 GB
    1024 GB = 1 TB

    Unicode,utf-8,gbk,每个编码英文,中文,分别用几个字节表示。

      Unicode utf-8 gbk
    英文 1 1 1
    中文 2 3 2
  • 相关阅读:
    6.无监督学习-降维
    5.无监督学习-DBSCAN聚类算法及应用
    4.无监督学习--K-means聚类
    如何让虚拟机与本机进行通信
    Linux网络配置
    网关是什么?有什么作用?
    DNS是什么
    软件工程第四周作业代码规范
    软件工程第四周作业之四则运算-C#实现
    一些讨论、读书的感想
  • 原文地址:https://www.cnblogs.com/xiao987334176/p/8602531.html
Copyright © 2020-2023  润新知