zoukankan      html  css  js  c++  java
  • Python之基础练习题

    1、执行Python脚本的两种方式

    复制代码
    # python3 hello.py 
    Hello World!
    你好
    
    # cat hello.py |python
    Hello World!
    你好
    复制代码

    2、简述位、字节的关系

    位:计算机的计算单位,代表0或者1
    字节:一字节相当于8位

    3、简述ascii、unicode、utf-8、gbk的关系

    4、请写出"李杰"分别用utf-8和gbk编码所占的位数

    >>> len(bytes(name,encoding='utf-8'))
    6
    >>> len(bytes(name,encoding='gbk'))  
    4

    5、Python单行注释和多行注释分别用什么?

    单行注释: # 被注释内容
    多行注释: ''' 被注释内容 '''

    6、声明变量注意事项有哪些?

    1)由字母、数字和下划线构成,不能以数字开头,不能任意特殊字符
    2)变量定义规范,使用驼峰式或者下划线式格式
    3)变量定义尽量简明,易懂,方便使用者应用

    7、利用内置函数chr(),ord()以及random模块写一个简单随机4位验证码

    复制代码
    import random
    tmp=''                        # 最后生成的随机码
    for i in range(4):
        n=random.randrange(0,2)            # 生成随机数1或0,用来判断下面,是生成随机数字,还是字母
        if n==0:
            num = random.randrange(65, 91)      # 为0时候,生成大写字母
            tmp+=chr(num)
        else:
            k=random.randrange(0,10)         # 为1时候,生成数字
            tmp+=str(k)
    print(tmp)                      # 这里运行的时候每次生成的4为随机码都不同
    复制代码

    8、如何查看变量在内存中的地址?

    >>> name = 'Alex'                        
    >>> id(name)
    3071018080

    9、执行Python程序时,自动生成的.pyc文件的作用是什么?

    Python执行前生成的编译字节码文件

    10、写代码

    a.实现用户输入用户名和密码,当用户名为 seven且密码为123时,显示登陆成功,否则登陆失败!

    复制代码
    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    
    username = input("请输入用户名:")
    password = input("请输入密码:")
    if username == 'seven' and password == '123':
        print("登录成功")
    else:
        print("登录失败")
    复制代码

    b.实现用户输入用户名和密码,当用户名为 seven且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入三次

    复制代码
    # cat a.py 
    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    
    error_num = 0
    while True:
        username = input("请输入用户名:")
        password = input("请输入密码:")
        if username == 'seven' and password == '123':
            print("登录成功")
            break
        else:
            print("登录失败")
            error_num += 1
            if error_num == 3:
                exit()
            else:
                continue
    
    # python3 a.py
    请输入用户名:1
    请输入密码:1
    登录失败
    请输入用户名:1
    请输入密码:1
    登录失败
    请输入用户名:1
    请输入密码:1
    登录失败
    mads@mads-virtual-machine:~$ python3 a.py
    请输入用户名:seven
    请输入密码:123
    登录成功
    复制代码

    c.实现用户输入用户名和密码,当用户名为 seven或alex且 密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入三次

    复制代码
    # cat a.py 
    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    
    error_num = 0
    while True:
        username = input("请输入用户名:")
        password = input("请输入密码:")
        if username == 'seven' or username == 'alex' and password == '123':
            print("登录成功")
            break
        else:
            print("登录失败")
            error_num += 1
            if error_num == 3:
                exit()
            else:
                continue
    # python3 a.py
    请输入用户名:3
    请输入密码:3
    登录失败
    请输入用户名:3
    请输入密码:3
    登录失败
    请输入用户名:33
    请输入密码:33
    登录失败
    #  python3 a.py
    请输入用户名:seven
    请输入密码:123
    登录成功
    # python3 a.py
    请输入用户名:alex
    请输入密码:123
    登录成功
    复制代码

    11、写代码

    1)使用while循环实现输出2-3+4-5+6.....+100的和

    复制代码
    #!/usr/bin/env python
    sum = 0
    for i in range(2,101):
        if i % 2 == 0:
           sum += i
        else:
           sum -= i
        print(i,sum)
    print("sum:",sum)
    复制代码

     2)求1-2+3-4+5 ... 99的所有数的和

    复制代码
    方法1:傻逼到家的方法
    sum1 =0
    sum2 = 0
    for i in range(1,100,2):
        sum1 += i
    for j in range(2,100,2):
        sum2 +=j
    sum3 = sum1 -sum2
    print(sum3)
    
    方法2:正常程序猿的方法
    sum=0
    for i in range(0,100):
        if i%2==0:
            sum-=i
        else:
            sum+=i
    print(sum)
    复制代码

    3)使用while循环输入 1 2 3 4 5 6     8 9 10

    复制代码
    i=0
    while i<10:
        i += 1
        if i == 7:
            continue
        else:
            print(i)
    复制代码

    4)输出 1-100 内的所有奇数

    for i in range(1,100,2):
            print(i)

    5)输出 1-100 内的所有偶数

    for i in range(2,100,2):
            print(i)

     12、分别书写数字5,10,32,7的二进制表示

    复制代码
    bin()  # 二进制
    oct()  # 八进制
    hex()  # 十六进制
    
    >>> a = [5,10,32,7]
    >>> for i in a:
    ...     print(i,":",bin(i))
    ...
     5 : 0b101
    10 : 0b1010
    32 : 0b100000
     7 : 0b111
    复制代码

    13、简述对象和类的关系

    对象是类的实例化

    14、现有如下两个变量,请简述n1和n2是什么关系?

    # 两个变量引用同一个内存地址
    >>> n1 = 123
    >>> n2 = 123
    >>> print(id(n1),id(n2))
    1582456464 1582456464

    15、现有如下两个变量,请简述n1和n2是什么关系?

    # 两个变量引用同一个内存地址
    >>> n1 = 123456
    >>> n2 = n1
    >>> print(id(n1),id(n2))
    1990112 1990112

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

    >>> n1 = 5
    >>> bytes(n1)
    b'x00x00x00x00x00'
    >>> len(bytes(n1))
    5

    17、布尔值分别有什么?

    真 假
    True False
    0 1

    18、阅读代码,请写出执行结果

    复制代码
    a = "alex"
    b = a.capitalize()
    print(a)
    print(b)

    结果:
    >>> a = "alex" >>> b = a.capitalize() >>> print(a) alex >>> print(b) Alex
    复制代码

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

    name = " aleX "
    a.移除name变量对应的值两边的空格,并输入移除有的内容
    b.判断name变量对应的值是否以 "al"开头,并输出结果
    c.判断name变量对应的值是否以 "X"结尾,并输出结果
    d.将name变量对应的值中的 " l" 替换为 " p",并输出结果
    e.将name变量对应的值根据 " l" 分割,并输出结果。
    f.请问,上一题 e分割之后得到值是什么类型?
    g.将name变量对应的值变大写,并输出结果
    h.将name变量对应的值变小写,并输出结果
    i.请输出name变量对应的值的第2个字符?
    j.请输出name变量对应的值的前3个字符?
    k.请输出name变量对应的值的后2个字符?
    l.请输出name变量对应的值中 "e" 所在索引位置?

    复制代码
    >>> name = " aleX "
    >>> name.strip()
    'aleX'
    >>> name.startswith("al")
    False
    >>> name.endswith("X")
    False
    >>> name.replace("l","p")
    ' apeX '
    >>> name.split('l')
    [' a', 'eX ']
    >>> type(name.split('l'))
    <class 'list'>
    >>> name.upper()
    ' ALEX '
    >>> name.lower()
    ' alex '
    >>> name[1]
    'a'
    >>> name[:2]
    ' a'
    >>> name[-2:]
    'X '
    >>> name.index("e")
    3
    复制代码

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

    复制代码
    >>> name = " aleX "
    >>> for i in name:
    ...     print(i)
    ...
    
    a
    l
    e
    X
    
    >>>
    复制代码

    21、请代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex','eric','rain']

    >>> li = ['alex','eric','rain']
    >>> "_".join(li)
    'alex_eric_rain'

    22、写代码,有如下列表,按照要求实现每一个功能(所有练习题同样适用于元组)

    li = ['alex','eric','rain']    
    a.计算列表长度并输出
    b.列表中追加元素"seven",并输出添加后的列表
    c.请在列表的第1个位置插入元素 "Tony",并输出添加后的列表
    d.请修改列表第2个位置的元素为 "Kelly",并输出修改后的列表
    e.请删除列表中的元素"eric",并输出修改后的列表
    f.请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表
    g.请删除列表中的第3个元素,并输出删除元素后的列表
    h.请删除列表中的第2至4个元素,并输出删除元素后的列表
    i.请将列表所有的元素反转,并输出反转后的列表
    j.请使用for、len、range 输出列表的索引
    k.请使用enumrate输出列表元素和序号(序号从 100 开始)
    l.请使用for循环输出列表的所有元素

    复制代码
    >>> li = ['alex','eric','rain']
    >>> print(len(li))
    3
    >>> li.append("seven")
    >>> li
    ['alex', 'eric', 'rain', 'seven']
    >>> li.insert(0,"Tony")
    >>> li
    ['Tony', 'alex', 'eric', 'rain', 'seven']
    >>> li[1] = 'Kelly'
    >>> li
    ['Tony', 'Kelly', 'eric', 'rain', 'seven']
    >>> li.remove('eric')
    >>> li
    ['Tony', 'Kelly', 'rain', 'seven']
    
    f:
    >>> li[1]
    'Kelly'
    >>> del li[1]
    >>> li
    ['Tony', 'rain', 'seven']
    
    g:
    >>> del li[2]
    >>> li
    ['Tony', 'rain']
    
    h:
    >>> li
    ['Tony', 'alex', 'eric', 'rain']
    >>> li[1:3]
    ['alex', 'eric']
    >>> del li[1:3]
    >>> li
    ['Tony', 'rain']
    
    i:
    >>> li[::-1]
    ['Tony', 'alex', 'eric', 'rain']
    
    >>> li = ['alex','eric','rain']
    >>> li.reverse()
    >>> li
    ['rain', 'eric', 'alex']
    
    j:
    >>> li
    ['rain', 'eric', 'alex']
    >>> for i in range(len(li)):
    ...     print(i)
    ...
    0
    1
    2
    
    k:
    >>> li
    ['rain', 'eric', 'alex']
    >>> for k,v in enumerate(li,100):
    ...     print(k,".",v)
    ...
    100 . rain
    101 . eric
    102 . alex
    
    l:
    >>> li
    ['rain', 'eric', 'alex']
    >>> for i in li:
    ...     print(i)
    ...
    rain
    eric
    alex
    复制代码

     22、写代码,有如下列表,请按照功能要求实现每一个功能
    li = ["hello",'seven',["mon",["h","kelly"],'all'],123,446]
    a.请输出"Kelly"
    b.请使用索引找到 'all'元素并将其修改为"ALL"

    复制代码
    >>> li = ["hello",'seven',["mon",["h","kelly"],'all'],123,446]
    >>> li[2][1][1]
    'kelly'
    >>> s = li[2][1][1]
    >>> s.capitalize()
    'Kelly'

    >>> index = li[2].index("all")
    >>> li[2][index] = "ALL"
    >>> li
    ['hello', 'seven', ['mon', ['h', 'kelly'], 'ALL'], 123, 446]
    复制代码

    25、有如下变量,请实现要求的功能
    tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])
    a. 讲述元祖的特性
    b. 请问 tu 变量中的第一个元素 "alex" 是否可被修改?
    c. 请问 tu 变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "Seven"
    d. 请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "Seven"

    复制代码
    a:元组具有列表的全部特性,不同的是,元组的元素不能修改
    b:不能
    >>> tu[0] = 'cc'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    c:列表,能被修改
    >>> tu
    ('alex', [11, 22, {'k2': ['age', 'name'], 'k1': 'v1', 'k3': (11, 22, 33)}, 44])
    >>> tu[1][2]["k2"].append("cc")
    >>> tu
    ('alex', [11, 22, {'k2': ['age', 'name', 'cc'], 'k1': 'v1', 'k3': (11, 22, 33)}
     44])
    
    d:元组,不能
    >>> tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])
    >>> tu[1][2]["k3"].append("cc")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'tuple' object has no attribute 'append'
    复制代码

    26、字典
    dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
    a. 请循环输出所有的 key
    b. 请循环输出所有的 value
    c. 请循环输出所有的 key 和 value
    d. 请在字典中添加一个键值对, "k4":"v4",输出添加后的字典
    e. 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
    f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典
    g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典

    复制代码
    >>> dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
    >>> for k in dic.keys():
    ...     print(k)
    ...
    k2
    k1
    k3
    
    >>> for v in dic.values():
    ...     print(v)
    ...
    v2
    v1
    [11, 22, 33]
    >>> for k,v in dic.items(): ... print(k,v) ... k2 v2 k1 v1 k3 [11, 22, 33] >>> dic {'k2': 'v2', 'k1': 'v1', 'k3': [11, 22, 33]} >>> dic["k4"] = "v4" >>> dic {'k2': 'v2', 'k1': 'v1', 'k4': 'v4', 'k3': [11, 22, 33]} >>> dic["k1"] = "alex" >>> dic {'k2': 'v2', 'k1': 'alex', 'k4': 'v4', 'k3': [11, 22, 33]} >>> dic["k3"].append(44) >>> dic {'k2': 'v2', 'k1': 'alex', 'k4': 'v4', 'k3': [11, 22, 33, 44]} >>> dic["k3"].insert(0,18) >>> dic {'k2': 'v2', 'k1': 'alex', 'k4': 'v4', 'k3': [18, 11, 22, 33, 44]}
    复制代码

    27、转换
    a. 将字符串 s="alex" 转换成列表
    b. 将字符串 s="alex" 转换成元祖
    b. 将列表 li=["alex","seven"] 转换成元组
    c. 将元祖 tu=('Alex',"seven") 转换成列表
    d. 将列表 li=["alex","seven"] 转换成字典且字典的 key 按照 10 开始向后递增

    复制代码
    >>> s = "alex"
    >>> list(s)
    ['a', 'l', 'e', 'x']
    
    >>> tuple(s)
    ('a', 'l', 'e', 'x')
    
    >>> li=["alex","seven"]
    >>> tuple(li)
    ('alex', 'seven')
    
    >>> tu=('Alex',"seven")
    >>> list(tu)
    ['Alex', 'seven']
    
    >>> li=["alex","seven"]
    >>> li_dic = {}
    >>> for k,v in enumerate(li,10):
    ...     li_dic[k] = v
    ...
    >>> li_dic
    {10: 'alex', 11: 'seven'}
    复制代码

    27、转码
    n="老男孩"
    a. 将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出
    a. 将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出

    复制代码
    >>> n = "老男孩"
    >>> n.encode("utf-8")
    b'xe8x80x81xe7x94xb7xe5xadxa9'
    >>> n.encode().decode("utf-8")
    '老男孩'
    
    >>> n = "老男孩"
    >>> n.encode('gbk')
    b'xc0xcfxc4xd0xbaxa2'
    >>> n.encode('gbk').decode('gbk')
    '老男孩'
    复制代码

    28、求 1-100 内的所有数的和

    >>> sum = 0
    >>> for i in range(1,101):
    ...     sum += i
    ...
    >>> sum
    5050

    29、元素分类
    有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个 key 中,将小于 66 的值保存至第二个 key 的值中。
    即: {'k1': 大于 66 的所有值,'k2': 小于 66 的所有值}

    复制代码
    # 自定义方法实现
    
    def f1(args):
        result = []
        for item in args:
            if item > 66:
                result.append(item)
        return result
    
    li = [11, 22, 33, 44, 55]
    ret = f1(li)
    print(ret)
    
    
    # 通过filter功能实现需求
    def f2(a):
        if a > 66:
            return True
    li = [11, 22, 33, 44, 55]
    res = filter(f2, li)
    print(list(res))
    复制代码

    30、购物车
    功能要求:
    要求用户输入总资产,例如: 2000
    显示商品列表,让用户根据序号选择商品,加入购物车
    购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
    goods=[
    {"name":"电脑","price":1999},
    {"name":"鼠标","price":10},
    {"name":"游艇","price":20},
    {"name":"美女","price":998},
    ]

    31、查找元素,移除空格,并查找以 a或A开头 并且以 c 结尾的所有元素
    li = ["alec", " aric", "Alex", "Tony", "rain"]
    tu = ("alec", " aric", "Alex", "Tony", "rain")
    dic = {'k1': "alex", 'k2': ' aric',  "k3": "Alex", "k4": "Tony"}

    复制代码
    for i in li:
        if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
            print(i)
    for i in tu:
        if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
            print(i)
    for i in dic.values():
        if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
            print (i)
    复制代码

    32、用户交互,显示省市县三级联动的选择

    dic = {
        "河北": {
            "石家庄": ["鹿泉", "藁城", "元氏"],
            "邯郸": ["永年", "涉县", "磁县"],
        },
        "湖南": {
            "长沙":['a','b','c'],
            "株洲":['d','e','f']
        },
        "湖北": {
            "武汉":['g','h','i'],
            "黄石":['j','k','l']
        }
    }

    出处:http://www.cnblogs.com/madsnotes/

    声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    MySQL行级锁和表级锁
    轮询、长轮询、长连接、socket连接、WebSocket
    Http请求的TCP连接
    TCP的三次握手和四次挥手
    面试:做过sql优化吗?
    Java线程池
    C#代码审查工具 StyleCop
    C#中图片切割,图片压缩,缩略图生成的代码
    一个对称加密、解密的方法C#工具类
    C# 音频操作系统项目总结
  • 原文地址:https://www.cnblogs.com/xitingxie/p/10749585.html
Copyright © 2011-2022 走看看