zoukankan      html  css  js  c++  java
  • 第2章 Python基础-字符编码&数据类型 字符编码&字符串 练习题

     1.简述位、字节的关系

    位(bit)是计算机中最小的表示单元,数据传输是以“位”为单位的,1bit缩写为1b
    字节(Byte)是计算机中最小的存储单位,1Byte缩写为1B
    8bit = 1Byte

    2.简述ascii、unicode、uft-8、gbk的关系

    美国制定了一套字符编码,对英语字符与二进制位之间的关系做了统一规定,这被称为ASCII码,由1个字节组成,最多支持2**8=256个字符
    Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案,现代操作系统和大多数编程语言都直接支持Unicode,不管是英文字母还是汉字,通常由2个字节组成(只有很生僻的字符才会被编码成4个字节),最多支持2**16=65536个字符,如果文本基本全部都是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,所以本着节约精神,出现了UTF-8编码
    UTF-8最大的特点就是它是一种可变长的编码方式,通常由1-3个字节组成,常用的英文字母被编码成1个字节,汉字通常是3个字节(只有很生僻的字符才会被编码成4-6个字节),同时ASCII编码可以看成UTF-8编码的一部分(英文字符),所以只支持ASCII编码的软件可以在UTF-8编码下运行
    GBK是汉字国标扩展码,由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。Windows默认编码GBK,中文占2个字节
    现在计算机系统通用的字符编码工作方式:在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或需要传输时候,就转换为UTF-8编码

    3.请写出“李杰”分别用utf-8和gbk编码所占的位数

    UTF-8中一个英文占1个字节,一个中文占3个字节,此处“李杰”占6个字节
    GBK中一个中文占2个字节,此处“李杰”占4个字符

    4.如有一个变量n1 = 5,请使用int提供的方法,得到该变量最少可以用多少个二进制位表示?

    #!/usr/bin/env python
    #-*- encoding:utf-8 -*-
    
    n1 = 5
    v = int.bit_length(n1)
    print(v)

    5.布尔值分别有什么?

    True和False
     
    "" [] () {} => False #空字符串,空列表,空元祖,空字典
    "有内容" => True
     
    0  => False
    其他数字 => True

    6.阅读代码,请写出执行结果

    a = "alex"
    b = a.capitalize()
    print(a)
    print(b)
    View Code

    执行结果:

    alex
    Alex
    #首字母变大写,其他字母变小写

    7.写代码,有如下变量,请按照要求实现每个功能

    name=" aleX"

    a.移除name变量对应的值两边的空格,并输出移除后的内容

    print(name.strip())

    b.判断name变量对应的值是否以"al"开头,并输出结果

    print(name.startswith('al'),name)

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

    print(name.endswith('X'),name)

    d.将name变量对应的值中的"l"替换为"p",并输出结果

    print(name.replace('l','p'))

    e.将name变量对应的值中的"l"分割,并输出结果。

    print(name.split('l'))

    f.请问,上一题l分割之后得到是什么类型(可选)?

    #列表

    g.将name变量对应的值变大写,并输出结果

    print(name.upper())

    h.将name变量对应的值变小写,并输出结果

    print(name.lower())

    i.请输出name变量对应的值的第2个字符?

    print(name[1])

    j.请输出name变量对应的值的前3个字符?

    print(name[:3])

    k.请输出name变量对应的值的后2个字符?

    print(name[-2:]) #-1代表最后一个字符,-2代表倒数第二个字符

    l.请输出name变量对应的值中"e"所在的索引位置?

    print(name.index('e'))

    m.获取子序列,仅不包含最后一个字符。如:oldboy 则获取oldbo;root则获取roo

    print(name.rstrip(name[-1:]))

    8.字符串是否可迭代?如可以请使用 for 循环每一个元素?

    #可迭代对象==可以被for进行循环获取
    name = "aleX"
    for i in name:
    print(i)

    9.请用代码实现:

    a.利用下划线将列表的每一个元素拼接成字符串,li = "alexericrain"

    li = "alexericrain"
    print('_'.join(li))

    b.利用下划线将列表的每一个元素拼接成字符串,li = ['alex','eric','rain']

    li = ['alex','eric','rain']
    print('_'.join(li))

    10.Python2中的range和Python3中的range的区别?

    Python2中的range返回的是一个列表,直接创建内容
    Python3中的range返回的是一个迭代值,只有for循环时,内容才一个一个创建

    11.实现一个整数加法计算器:

    如:
    content = input('请输入内容:') #如:5+9

    #方法一:
    content = input('请输入内容:')
    print(eval(content))
    
    #方法二:
    content = input('请输入内容:')  #5+9
    n1,n2 = content.split('+')
    n1 = int(n1)
    n2 = int(n2)
    print(n1+n2)

    12.计算用户输入的内容中有几个十进制数?几个字母?

    如:
    content=input('请输入内容:') #如: asduiaf878123jkjsfd-213928

    content = input('请输入内容:')
    
    number_of_decimal = 0
    number_of_alpha = 0
    for i in content:
        if i.isdecimal():
            number_of_decimal += 1
        if i.isalpha():
            number_of_alpha += 1
    
    print('十进制数的数量:', number_of_decimal, '字母的数量:', number_of_alpha)
    content=input('请输入内容:')
    
    number_of_decimal = 0
    number_of_alpha = 0
    for i in range(len(content)):
        if content[i].isdecimal():
            number_of_decimal += 1
        if content[i].isalpha():
            number_of_alpha += 1
    
    print('十进制数的数量:',number_of_decimal,'字母的数量:',number_of_alpha)

    13.简述int和9等数字以及str和"xxoo"等字符串的关系?

    int,str 是类
    0和"xxoo"是根据相应的类创建的对象

    14.制作随机验证码,不区分大小写。

    流程:
    - 用户执行程序
    - 给用户显示需要输入的验证码
    - 用户输入的值
    用户输入的值和显示的值相同时显示正确信息;否则继续生成随机验证码继续等待用户输入
    生成随机验证码事例:

    def check_code():
    import random
    checkcode = ''
    for i in range(4):
    current = random.randrange(0,4)
    if current != i:
    temp = chr(random.randint(65,90))
    else:
    temp = random.randint(0,9)
    checkcode += str(temp)
    return checkcode
    
    code = check_code()
    print(code)
    View Code
    #!/usr/bin/env python
    # -*- encoding: utf8 -*-
    
    def check_code():
        import random
        checkcode = ''
        for i in range(4):
            current = random.randrange(0, 4)
            if current != i:
                temp = chr(random.randint(65, 90))
            else:
                temp = random.randint(0, 9)
            checkcode += str(temp)
        return checkcode
    
    while True:
      code = check_code()
      print(code)
      app = input("请输入验证码:")
      if code.upper() == app.upper():
        print("输入正确")
        break
      else:
        print("输入错误")
        s = input("是否重新输入?")
        if s == "no":
            break
        else:
            continue

    15.开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:

    如“苍老师”“东京热”,则将内容替换为***

    v = input(">>>")
    v = v.replace("苍老师","***")
    v = v.replace("东京热","***")
    print(v)
    

    16.制作表格

    循环提示用户输入:用户名、密码、邮箱(要求用户输入的长度不超过20个字符,如果超过则只有前20个字符有效)

    如果用户输入q或Q表示不再继续输入,将用户输入的内容以表格形式显示。

    #!/usr/bin/env python
    # -*- encoding: utf8 -*-
    
    s = ""
    while True:
        name = input("用户名:")
        if name == "q" or name == "Q":
            break
        if len(name) >= 20:
            name = name[:20]
        passwd = input("密码:")
        if len(passwd) >= 20:
            passwd = passwd[:20]
        email = input("邮箱:")
        if len(email) >= 20:
            email = email[:20]
        template = "{0}	{1}	{2}
    "
        v = template.format(name, passwd, email)
        s += v
    
    print(s.expandtabs(20))
    
  • 相关阅读:
    HDU 1116 Play on Words(并查集和欧拉回路)(有向图的欧拉回路)
    PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()
    【VR】Leap Motion 官网文档 FingerModel (手指模型)
    2014年辛星解读Javascript之DOM之事件及其绑定
    java.util.logging.Logger使用具体解释
    技术走向管理一些思考(8)-适合的人才
    rac_grid自检提示缺少cvuqdisk包
    C++第15周(春)项目3
    交换a、b的值temp = a; a = b; b = temp;比a = a^b;b = a^b;a = a^b;快
    BZOJ 1089 SCOI2003 严格n元树 动态规划+高精度
  • 原文地址:https://www.cnblogs.com/wushuaishuai/p/7700759.html
Copyright © 2011-2022 走看看