跳转至

第一阶段考试题

  1. 简述解释型语言和编译型语言的区别。

  2. 罗列你听说过的编程语言。

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

  4. 简述你理解的 ascii、unicode、utf-8、gbk 编码。

  5. py2和py3默认解释器编码分别是什么?如何在代码中修改解释器的编码?

  6. pass的作用?

  7. is和==的区别?

  8. 列举你了解的Python2和Python3的区别。

  9. 变量名的命名规范有哪些?

  10. 都有那些值转换为布尔值时为False?

  11. 简述如下三个变量的区别。

    v1 = (1)
    v2 = (1,)
    v3 = 1
    
  12. 你所学的数据类型中哪些是可变的类型?

  13. 你所学的数据类型中哪些是可哈希的类型?

  14. 你所学的数据类型中哪些是有序的?

  15. 列举你能记得的如下数据类型的方法(独有功能)。

    • str
    • list
    • dict
  16. 请将字符 name = "wupeiqi" 翻转。

  17. 进制之间如何进行转换?

  18. 循环过程中 break和continue的作用是什么?

  19. 看代码写结果

    v1 = 1 or 9 and 88 or [11,22] and (1,2,3)
    
    v2 = 1>5 or "alex" and {"K1":"v1"} or 888
    
    print(v1,v2)
    
  20. 看代码写结果

     info = [ 
         {'k1':(1),'k2':{'k9':'luffy','k10':'武沛齐'}}, 
         (11,22,33,44),
         {199,2,3,4,5},
         True, 
         ['李杰','alex', { 'extra': ("alex",[18,20],'eric') } ]
    ]
    
    • 利用索引获取 "luffy"
    • 利用索引获取 44
    • 删除k10对应的键值对
    • 在 { 'extra': ("alex",[18,20],'eric') } 字典中添加一个键值对 "name":"武沛齐"
    • 在集合{199,2,3,4,5}中添加一个 "北京"
    • 将列表中的True修改为 "真"
    • 在列表 [18,20]的第0个索引位置插入 666
  21. 判断下面的代码是否正确?正确的话则写出结果,否则标明错误。

    v1 = (11,22,33)
    v2 = (11)
    v3 = {11,2,33}
    v4 = {11,2,("alex","eric"),33}
    v5 = {11,2,("alex",{"北京","上海"},"eric"),33}
    
  22. 看代码写结果

    v1 = [11,22,33]
    v2 = [11,22,33]
    v1.append(666)
    
    print(v1)
    print(v2)
    
  23. 看代码写结果

    v1 = [11,22,33]
    v2 = v1
    v1.append(666)
    
    print(v1)
    print(v2)
    
  24. 看代码写结果

    v1 = [1,2,3,4,5]
    v2 = [v1,v1,v1]
    v2[1][0] = 111
    v2[2][0] = 222
    
    print(v1)
    print(v2)
    
  25. 写代码实现,循环提示用户输入内容(Q或q终止),并将内容用 "_" 连接起来。

  26. 写代码实现,将IP转换为整数。

    如 10.3.9.12 转换规则为: 10 00001010 3 00000011 9 00001001 12 00001100 再将以上二进制拼接起来,然后再进行一次翻转。

    最终将翻转之后的二进制转换为整型。

  27. 写代码实现,车牌的区域划分。

    car_list = ['鲁A32444', '沪B12333', '京B8989M', '京C49678', '黑C46555', '晋B25041', '沪C34567']
    
    # 根据以上代码获取各省车牌数量,例如:info = {"沪":2,"京":2 ...}
    
  28. 写代码实现,数据格式化处理。

    text = """id,name,age,phone,job
    1,alex,22,13651054608,IT 
    2,wusir,23,13304320533,Tearcher
    3,老男孩,18,1333235322,IT"""
    
    # 将上述数据处理为如下格式的结果:
    #    info = [{'id':'1','name':'alex','age':'22','phone':'13651054608','job':'IT'},.... ..]
    # 提示:text的内容是根据 \n 分割(\n表示回车换行)。
    
  29. 写代码实现 累乘计算器。

    content = input("请输入内容:") # 用户可能输入 5*9*99.... 或 5* 9 * 10 * 99 或 5 * 9 * 99...
    
    # 补充代码实现
    
  30. 使用for循环实现输出 9*9 乘法表

    1*1
    2*1 2*2
    3*1 3*2 3*3
    4*1 4*2 4*3 4*4
    5*1 5*2 5*3 5*4 5*5
    6*1 6*2 6*3 6*4 6*5 6*6
    7*1 7*2 7*3 7*4 7*5 7*6 7*7
    8*1 8*2 8*3 8*4 8*5 8*6 8*7 8*8
    9*1 9*2 9*3 9*4 9*5 9*6 9*7 9*8 9*9
    
  31. 补充代码实现《棋牌游戏11点》

    需求:

    • 生成一副扑克牌(自己设计扑克牌的结构,小王和大王可以分别用14、15表示 )

    • 3个玩家

    user_list = ["alex","武沛齐","李路飞"]
    
    • 发牌规则

    • 默认先给用户发一张牌,其中 J、Q、K、小王、大王代表的值为0.5,其他就是则就是当前的牌面值。

    • 用户根据自己的情况判断是否继续要牌。
      • 要,则再给他发一张。
      • 不要,则开始给下个玩家发牌。
    • 如果用户手中的所有牌相加大于11,则表示爆了,此人的分数为0,并且自动开始给下个人发牌。

    • 最终计算并获得每个玩家的分值,例如:

    result = {
        "alex":8,
        "武沛齐":9,
        "李路飞":0
    }
    

    必备技术点:随机抽排

    import random
    
    total_poke_list = [("红桃", 1), ("黑桃", 2), ("大王", 15), ("小王", 14)]
    
    # 随机生成一个数,当做索引。
    index = random.randint(0, len(total_poke_list) - 1)
    # 获取牌
    print("抽到的牌为:", total_poke_list[index])
    # 踢除这张牌
    total_poke_list.pop(index)
    
    print("抽完之后,剩下的牌为:", total_poke_list)
    

    代码示例:(请补充实现)

    result = {}
    user_list = ["alex","武沛齐","李路飞"]
    # 补充代码
    
    
    print(result)
    
#自己写的
import random
# 补充代码
#生成一副扑克牌(自己设计扑克牌的结构,小王和大王可以分别用14、15表示 )
total_poke_list = []
color_poke = ['红心','黑桃','方角','梅花']
for i in range(1,14):
    for j in color_poke:
        total_poke_list.append((j,i))
total_poke_list.append(('小王',14))
total_poke_list.append(('大王', 15))
print(total_poke_list)
# 发牌
result = {}
user_list = ["alex","武沛齐","李路飞"]
for i in user_list:
    print(f'当前用户{i}')
    count = 0   #分数计算
    while True:
        index = random.randint(0,len(total_poke_list)-1)
        poke = total_poke_list.pop(index)
        # jqk 大小王 0.5分
        value = poke[1]
        if poke[1] > 10:
            value = 0.5
        count += value
        print(f'当前发牌{poke},牌面总和{count}')
        if count > 11:
            print('所有牌数大于11 清0')
            result[i] = 0
            break
        dd = input('是否继续要牌 N/n 不要牌,其他任意键要牌 >')
        if dd.upper() == 'N':
            result[i] = count
            break

print(result)

张开导师 使用set实现 https://www.cnblogs.com/Neeo/articles/10614012.html

import os
poke_type = ('红桃', '黑桃', '梅花', '方块')
poke_set = set()
poke_set.update({('小王', 0.5), ('大王', 0.5)})
{(k + i, 0.5) for k in poke_type for i in ['J', 'Q', 'k', 'A']}
poke_set.update({(k + i, 0.5) for k in poke_type for i in ['J', 'Q', 'K', 'A']})
poke_set.update({(k + str(i), i) for k in poke_type for i in range(2, 11)})
# for k in poke_type:
#     for i in ['j','Q','k','A']:
#         poke_set.update({(k+i,0.5)})
print(poke_set)

user_dict = {
    "zhangkai": {'poke': [poke_set.pop()], 'score': 0, 'msg': ''},
    "likai": {'poke': [poke_set.pop()], 'score': 0, 'msg': ''},
    "wangkkai": {'poke': [poke_set.pop()], 'score': 0, 'msg': ''},
}
# print(user_dict)

for i in user_dict:
    while True:
        user_dict[i]['score'] = sum([i[1] for i in user_dict[i]['poke']])
        choice = input('尊敬的用户[{}],你现在手里有牌[{}],得分[{}],要牌y/不要n\n请根据需求输入: '.format(
            i,
            ' '.join([i[0] for i in user_dict[i]['poke']]),
            sum([i[1] for i in user_dict[i]['poke']])
        )).strip()
        if not choice:
            continue
        if choice.upper() == 'N':
            os.system('clear')  # windows 清屏指令cls,Linux请使用 clear
            break

        user_dict[i]['poke'].insert(0, poke_set.pop())
        user_dict[i]['score'] = sum([i[1] for i in user_dict[i]['poke']])
        if user_dict[i]['score'] > 11:
            print('尊敬的用户[{}],你手里有牌[{}],得分是[{}],大于11点,爆掉了,根据规则,我们不带你玩了!!!'.format(
                i,
                ' '.join([i[0] for i in user_dict[i]['poke']]),
                user_dict[i]['score']
            ))
            user_dict[i]['msg'] = '实际得分[{}],大于11点,爆掉了'.format(sum([i[1] for i in user_dict[i]['poke']]))
            user_dict[i]['score'] = 0
            break

print('选牌完毕,正在计算得分.....')
for i in user_dict:
    print('尊敬的用户[{}],你的总得分是[{}]'.format(i, user_dict[i]['score']), user_dict[i]['msg'])

# 计算出赢家
winner_user = max(user_dict, key=lambda x: user_dict[x]['score'])
print("最后的赢家是: {},得分是: {}".format(winner_user, user_dict[winner_user]['score']))