week1 基础数据类型考试

# 一,基础题。
# 1,简述变量命名规范(3分)

1.变量名只能是数字,字母,下划线的任意组合
2.变量名的第一个字符不能是数字
3.不能写中文
4.不能过长
5.不能是python中的关键字

# 2,字节和位的关系。(2分)

每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位。
每八个bit组成一个字符,这是计算机中最小的储存单位。
8bit = 1bytes字节

# 3,’太白’使用utf-8编码时,占的位数和字节数,是多少?使用gbk编码时,占的位数和字节数,是多少

utf-8: 48位, 6个字节
gbk:32位,4个字节
   unicode:32位 4个字节
# 4,默写字符串的十二个功能,并描述其作用。(12分)

s.capitalize()首字母大写,其他字母小写
s.count在一个范围内统计某str出现的次数
s.split以什么分割,将字符串转化成列表
s.upper所有字母大写
s.startswith以什么开头
s.endswith以什么结尾
s.center原字符居中,不够用空格补全
s.swapcase大小写翻转
s.strip() 去除首尾空格
s.find()通过元素找索引
s.index通过元素找索引
s.replace()替换,从头开始
len(s)长度


# 5,数字,字符串,列表,元祖,字典对应的布尔值的False分别是什么?(5分)

数字:0, 空字符串'',空列表[],空元组(),空字典{}

# 6,书写Python2与python3中的三个不同。(3分)

python2:1.源码冗余混杂 2.print()或者print{'内容')3.默认编码方式 ascii
python3:1.优雅清晰简洁 2.print('内容')3.默认编码方式:utf-8
# 7,写代码,有如下列表,利用切片实现每一个功能(每题一分,共计4分)

# li = [1,3,2,’a’,4,’b’,5,’c’]
# 通过对li列表的切片形成新的列表l3,l3 = [’1,2,4,5]
# 通过对li列表的切片形成新的列表l4,l4 = [3,’a’,’b’]
# 通过对li列表的切片形成新的列表l5,l5 = [‘c’]
# 通过对li列表的切片形成新的列表l6,l6 = [‘b’,’a’,3]
li = [1,3,2,'a',4,'b',5,'c']
print(li[0:-1:2])
print(li[1:-2:2])
print(li[-1::])
print(li[-3::-2])
# 8,组合嵌套题。
# a,写代码,有如下列表,按照要求实现每一个功能(每题3分,写出一种方法得1分,写出两种方法的3分。此题共9分)
# (每个都是一行代码实现)
# lis = [[‘k’,[‘qwe’,20,{‘k1’:[‘tt’,3,’1’]},89],’ab’]]
# 将列表lis中的’tt’变成大写(用两种方式)。
# 将列表中的数字3变成字符串’100’(用两种方式)。
# 将列表中的字符串’1’变成数字101(用两种方式)。

lis = [['k',['qwe',20,{'k1':['tt',3,'1']},89],'ab']]
print(lis[0][1][2]['k1'][0].upper())


lis[0][1][2]['k1'][0] = 'TT'
print(lis)

lis2=lis[0][1][2]['k1'][1] = '100'
print(lis)

lis3=lis[0][1][2]['k1'] = ['tt','100',1]
print(lis)

lis4=lis[0][1][2]['k1'] = ['tt',3,101]
print(lis)

lis5=lis[0][1][2]['k1'][2]=101
print(lis)
# b,写代码,有如下字典,按照要求实现每一个功能(5分)
# dic = {‘k1’:’v1’,’k2’:[‘alex’,’sb’],(1,2,3,4,5):{‘k3’:[‘2’,100,’wer’]}}
# 将’k2’对应的值的最后面添加一个元素’23’。
# 将’k2’对应的值的第一个位置插入一个元素’a’。
# 将(1,2,3,4,5)对应的值添加一个键值对’k4’,’v4’。
# 将(1,2,3,4,5)对应的值添加一个键值对(1,2,3),’ok’。
# 将’k3’对应的值的’wer’更改为’qq’。
dic = {'k1':'v1','k2':['alex','sb'],(1,2,3,4,5):{'k3':['2',100,'wer']}}
dic['k2'].append('23')
print(dic)

dic['k2'].insert(0,'a')
print(dic)

dic[(1,2,3,4,5)]['k4']='v4'
print(dic)

dic[(1,2,3,4,5)][(1,2,3)]='ok'
print(dic)

dic[(1,2,3,4,5)]['k3'][2]='qq'
print(dic)
# 9,转化题(4分)。

# Int与str之间如何转化,转换的结果是什么?有没有条件?
int加''变成str  str必须是数字才能转化为int(str)
# Int 与 bool之间如何转化,转换的结果是什么?有没有条件?
False---->int  0    True---->int 1
非0即为真,0为假
# str 与 bool之间如何转化,转换的结果是什么?有没有条件?
空字符串转化为bool值为False  其他为True
# str 与 list 能否转化?如何转化?
str -> list 能转化,用split
list -> str 用join前提是元素都是字符串
# 10,实现下列结果(5分)。
# 有列表li = [‘alex’,’wusir’,’rain’]通过操作该列表构造一个字符串s=’alexwusirrain’
# 有列表li = [‘alex’,’wusir’,’rain’]通过操作该列表构造一个字符串s=’alex*wusir*rain’
# 有字符串s = ‘alexwusirlex’,通过操作该字符串构造一个列表li = [‘a’,’exwusirlex’]
# 有字符串s = ‘alex wusir’,通过操作该字符串构造一个列表li = [‘alex’,’wusir’]
# 有字符串s = ‘alex’通过操作该字符串构造一个字符串s1 = ‘a_l_e_x’
li = ['alex','wusir','rain']
si=''.join(li)
print(si)

s2='*'.join(li)
print(s2)

s ='alexwusirlex'
s3 = s.split('l',1)
print(s3)

s4 = 'alex wusir'
s5 = s4.split(' ')
print(s5)

s = 'alex'
s1 = '_'.join(s)
print(s1)
# 11,分别使用while循环,和for循环打印1-2+3-4+5.......+99的结果。(10分)
count = 0
sum = 0
while count < 100:
    if count %2 == 0:
        sum -= count
    else:
        sum += count
    count += 1
print(sum)


sum = 0
for i in range(1,100):
    if i %2 == 0:
        sum -= i
    else:
        sum += i
print(sum)
# 12,使用range打印100,99,98,....1,0(2分)

for i in range (100,-1,-1):
    print(i)
# 13,计算用户输入内容中索引为奇数并且对应的元素为数字的个数(没有则个数为零)(6分)
comment = input('输入内容').strip()
s = 0
for i in range(1,len(comment),2):
    if comment[i].isdigit():
        s = s + 1
print(s)
# 14,补充代码(从已有的代码下面继续写):(6分)
# 有如下值li= [11,22,33,44,55,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
li = [11,22,33,44,55,77,88,99,90]
result = {}
for row in li:
    if row > 66:
        if 'k1' not in result:
            result['k1']=[]
        result['k1'].append(row)
    if row < 66:
        if 'k2' not in result:
            result['k2'] = []
        result['k2'].append(row)
print(result)
# 15, 查找列表li中的元素,移除每个元素的空格,并找出以’A’或者’a’开头,并以’c’结尾的所有元素,并添加到一个新列表中, 最后循环打印这个新列表。(3分)
li = ['taibai','alexC','AbC','egon','Ritian','Wusir','aqc']
l2 = []
for i in li:
    if (i[0] == 'A' or i[0] =='a') and i[-1]=='c':
        l2.append(i)
print(l2)

l2 = []
for i in li:
    i.strip()
    if (i.startswith('A') or i.startswith('a')) and i.endswith('c'):
        l2.append(i)
print(l2)
# 16,实现一个整数加法计算器:(3分)
# 如:content = input(‘请输入内容:’)  # 如用户输入:5+8+7....(最少输入两个数相加),然后进行分割再进行计算,将最后的计算结果添加到此字典中(替换None):
# dic={‘最终计算结果’:None}

dic={'最终计算结果':None}
content = input('请输入内容').strip().split('+')
sum = 0
for i in content:
    sum = int(i)+sum
print(sum)
dic['最终计算结果']=sum
print(dic)
 
# 17,按要求完成下列转化(如果按照索引去做,只能得4分)。(6分)
# list3 = [
# {"name": "alex", "hobby": "抽烟"},
# {"name": "alex", "hobby": "喝酒"},
# {"name": "alex", "hobby": "烫头"},
# {"name": "alex", "hobby": "Massage"},
# {"name": "wusir", "hobby": "喊麦"},
# {"name": "wusir", "hobby": "街舞"},
# ]

# 如何把上面的列表转换成下方的列表?
# 写死方法
# list4 = [
# {"name": "alex", "hobby_list": ["抽烟", "喝酒", "烫头", "Massage"]},
# {"name": "wusir", "hobby_list": ["喊麦", "街舞"]},]

写死方法
list4 = [
    {"name": "alex", "hobby_list": ["抽烟", "喝酒", "烫头", "Massage"]},
    {"name": "wusir", "hobby_list": ["喊麦", "街舞"]},]

list5=[]
dic1={'name':'alex','hobby_list':[]}
dic2={'name':'wusir','hobby_list':[]}
for i in list3:
    if i['name'] == 'alex':
        dic1['hobby_list'].append(i['hobby'])
    else:
        dic2['hobby_list'].append(i['hobby'])
list5.append(dic1)
list5.append(dic2)
print(list5)

老师的方法🌹
构想:
dic ={'alex':
           {"name": "alex", "hobby_list": ["抽烟", "喝酒", "烫头", "Massage"]},
      'wusir':
            {"name": "wusir", "hobby_list": ["喊麦", "街舞"]}
      }
print(list(dic.values()))
实际做法:
dic = {}
for i in list3:
    if i['name'] not in dic:
        dic[i['name']]={'name':i['name'],'hobby_list':[i['hobby']],}
    else:
        dic[i['name']]['hobby_list'].append(i['hobby'])
print(list(dic.values()))
# 18,写程序:模拟公司hr录入员工账号密码的程序。(10分)
# 1),员工的账号密码存储在这种数据类型中:
# user_list = [
# {'username':'barry','password':'1234'},
# {'username':'alex','password':'asdf'},
# ]
# 2)非法字符模板:board = ['张三','李小四','王二麻子']
# 3)Hr输入用户名,密码(可持续输入,如果想终止程序,那就在输入用户名时输入Q或者q退出程序),在Hr输入用户名时,检测此用户名是否有board里面的非法字符,如果有非法字符,则将非法字符替换成同数量的*(如王二麻子替换成****),然后添加到user_list中,如果没有非法字符,则直接添加到user_list中,每次添加成功后,打印出刚添加的用户名,密码。
board = ['张三','李小四','王二麻子']
user_list=[]
while True:
    username = input('请输入用户名:Q/q退出').strip()
    if username.upper() == 'Q':break
    password = input('请输入密码:').strip()
    for i in board:
        if i in username:
            username = username.replace(i,'*'*len(i))
    user_list.append({'username':username,'password':password},)
    print('已成功添加%s,密码为%d' % (username, int(password)))
print(user_list)
 
 
posted on 2018-03-27 18:45  欣蔚  阅读(243)  评论(0编辑  收藏  举报