Python Day8

习题

#1. 变量名规范(3分)
#答案:数字字母下划线,数字不能放在前,不能使用python关键字
#2. 字节和位关系(2分)
#答案:1字节等于8位
#3. 看代码写结果(2分)
name = “wupeiqi” result = name.upper()
print(name)
print(result)

#结果:wupeiqi  WUPEIQI
#4. “李泉”使用utf-8编码时,占用字节以及位数;使用gbk编码时,占用字节以及位数(2分)
#答案:utf - 8:占6个字节 ,48位      gbk:占4个字节,32位
#5. 简述一下两段代码的区别?(2分)
n1 = “wupeiqi” n2 = n1
n1 = “wupeiqi” n2 = “wupeiqi”

#答案:第一段是令变量n2等于n1    第二段创建了一个新的字符串n2
#6. 默认字符串中的10个功能并描述作用(10分)
-isdecimal  是否是数字
-upper    全大写
-lower    全小写
-strip    去空格
-capitalize  首字母大写
-lstrip    左侧空格
-rstrip    右空格
-len      字符串长度
-startswith 是否是以···为首
-endswith  是否是以···为末尾
-split     分割
#7. 书写布尔值为False的常用值(2分)
#答案:0,{},[],(),None
#8. 书写Python3和Python2的三个不同(3分)
#python3没有xrange,Python2有
#python3识别中文   python2报错
#python3中print用加括号   python2不用
#9. 简述深浅拷贝(2分)
#浅拷贝只拷贝一层,深拷贝拷贝所有层
#10. 分别使用for和while循环实现 1 - 2 + 3 - 4 + 5 …+99 (8分)
#while方法:
i = 0
v = 0
while i<99:
    i += 1
    if i % 2 ==1:
        v += i
    else:
        v -=i
print(v)

#for方法:
v = 0
for i in range(0,100):
    if i % 2 ==1:
        v += i
    else:
        v -= i
print(v)
#11. 使用range实现打印 100,99,98…1,0 (2分)
for i in range(100,-1,-1):
  print(i)
#12. 看代码写结果(3分) 
n1 = [11,22,33] 
n2 = n1 
n3 = n1.copy() 
n1[1] = 666
print(n1) 
print(n2) 
print(n3)
#结果:
[11,666,33]  [11,666,33]  [11,22,33]
#13.打印 9*9 乘法表(8分)即:
1 * 1 = 1
1 * 2 = 2  2 * 2 = 4
1 * 3 = 3  2 * 3 = 6 …

1 * 9 = 9  2 * 9 = 18 …
#代码:
#第一种
for i in range(1,10):
    for j in range(1,i+1):
        print('%d*%d=%d'%(j,i,i*j),end=' ')
    print()
#第二种
 for i in range(1,10):
     for j in range(1,i+1):
         if i == j:
             print('%s*%s=%s' % (j, i, i * j),end=' ')
         else:
             print('%s*%s=%s'%(j,i,i*j),end=' ')
#14. 判断一下代码是否正确,如果错误则改正,否则书写结果(4分)
name = “你{0},{1}无理取闹”
n1 = name.format(‘冷酷’,’无情’) 
print(n1) 
n2 = name.format(**[’冷酷’,’无情’]) 
print(n2)
name = “你{xx},{oo}无理取闹” 
n3 = name.format(oo=‘冷酷’,xx=’无情’)
print(n3)
n4 = name.format(*{‘xx’: ’冷酷’, ‘oo':’无情’}) 
print(n4)

#答:'你冷酷,无情无理取闹'
#第二个加一个*   第四个两个*
#15. 计算用户输入的内容中索引为奇数并且值为数字的个数(7分)
#第一种
v = input('请输入:')
c = 0
for item in range(len(v)):
    if item % 2 == 1 and v[item].isdecimal():
        c += 1
print(c)
#第二种
v = input('请输入:')
v1 = v[1::2]
c = 0
for item in v1:
    if item.isdecimal():
        c += 1
print(c)

#16. 实现购物车(8分)
#            功能要求:
#                    要求用户输入自己拥有总资产,例如:2000                     
#     显示商品列表,让用户根据序号选择商品,加入购物车                     购买,如果商品总额⼤大于总资产,提示账户余额不不⾜足,否则,购买成功。
#        购买成功时,需要打印购物清单商品列表:
#                goods = [
#                    {"name": "电脑", "price": 1999},
#                    {"name": "⿏鼠标", "price": 10},
#                    {"name": "游艇", "price": 20},
#                    {"name": "美⼥女女", "price": 998},
#                ]
#代码:
goods = [
                    {"name": "电脑", "price": 1999},
                    {"name": "鼠标", "price": 10},
                    {"name": "游艇", "price": 20},
                    {"name": "美⼥女女", "price": 998},
                ]
dic =[]
while True:
    z = input('请输入总资产:')
    z=z.strip()
    if z.isdecimal():
        z = int(z)
        print('总资产为:',z)
        break
    else:
        print('输入错误请重新输入:')
s = 1
for item in goods:
    print(s,item['name'],item['price'])
    s +=1
n = 0
while True:
    i = input('请输入要购买商品的序号,结算请输入q:')
    i = i.strip().lower()
    if i == 'q':
        break
    elif i.isdecimal():
        i = int(i)
        if i < len(goods)-1:
          print(i,goods[i-1]['name'],goods[i-1]['price'])
          n += goods[i-1]['price']
          dic.append(goods[i-1]['name'])
    else:
        print('输入格式错误请重新输入')
if n < z:
 print('购买成功,剩余金额:%d'%(z-n))
 print('购买的商品列表为:',dic)
else:
    print('购买失败,缺少金额为:%d' % (n-z))
    print('购买的商品列表为:', dic)
#17.看代码书写结果(3分)
for i in range(0,5):
    print(i)     
    for j in (0,i):
        print(j)
#结果:0 1 2 3 4 0 4
#18. 看代码书写结果(3分)
 while True:
    for i in range(10):
           print(i)
        if i == 5:             
   continue     
 else:
        break
#结果为:0,1,2,3,4,5,6,7,8,9
#19. 补充代码(5分)有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
#即: 
#{'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
 #代码:
li = [11,22,33,44,55,66,77,88,99,90]
result = {} for row in li:
#代码:
#方法一
li = [11,22,33,44,55,66,77,88,99,90]
result = {'k1':[] ,'k2':[]}
for row in li:
    if row >66:
        result['k1'].append(row)
    elif row <66:
        result['k2'].append(row)
print(result)
#方法二
li = [11,22,33,44,55,66,77,88,99,90]
result = {}
for row in li:
    if row > 66:
        if result.get('k1'):    # row =88 result={'k1':[77]}
            #result['k1'] == [77]
            result['k1'].append(row)
        else:
            result['k1'] = [row]
    elif row < 66:
        if result.get('k2'):
            result['k2'].append(row)
        else:
            result['k2'] = [row]
#方法三
li = [11,22,33,44,55,66,77,88,99,90]
result = {}
for row in li:
    if row > 66:
        if 'k1' in result:
            result['k1'].append(row)
        else:
            result['k1'] = [row]
    elif row < 66:
        if 'k2' in result:
            result['k2'].append(row)
        else:
            result['k2'] = [row]

print(result)
#20. 写代码,将列表 li = [11,22,33,44,55]的第一个之和最后一个值相加并插入索引为3的位置(3分) 
#第一种
li = [11,22,33,44,55]
v = li[0] + li[4]
li.insert(3,v)
print(li)
#第二种
 li = [11,22,33,44,55]
 su = li[0]+li[-1]
 li.insert(3,su)
 print(li)
#21. 写代码,有以下数字:1,2,3,4,5,6,7,8 共八个数字,能组成多少个互不相同且无重复的两位数?(8分) 
li = ['1','2','3','4','5','6','7','8']
c = 0
for item in li:
    for it in li:
        if item != it:
         y = item + it
   c = c+1
        else:
            continue
print(c)
#22. 写代码,有以下列表,请找到列表中任意两个数字相加等于9的元素的索引(8分)
#nums = [2,7,11,15,1,8,7]
#结果为: [(0,1),(4,5)]

#代码:
nums = [2,7,11,15,1,8,7]
li = []
for item in range(0,len(nums)):
    for it in range(item,len(nums)):
        if nums[item] + nums[it] == 9:
         v = ((item,it))
         li.append(v)
print(li)
#23. 看代码,书写结果(2分) 
dic = dict.fromkeys([‘k1’,‘k2',True,(11,22)],[]) 
dic[‘k1’].append(6) 
dic[‘k2’].append(7) 
print(dic)
#结果:
#{'k1': [6, 7], 'k2': [6, 7], True: [6, 7], (11, 22): [6, 7]}
#24.基于文件实现用户登录程序,提示用户输入用户名和密码,检查是用户名和密码是否正确(10分)保存用户名密码的文件user.txt,内容格式:
#第一种
f1 = open('D:python.txt',encoding='utf-8',mode='r')
v = f1.read()
f1.close()
i = v.split(' ')
li = {}
li['name'] = []
li['pwd'] = []
for item in i:
    l,u = item.split('|')
    li['name'].append(l)
    li['pwd'].append(u)
v = 0
while True:
        n = input('请输入用户名:')
        #for item in li['name']:
        if n in li['name']:
            while True:
                v = li['name'].index(n)
                v = int(v) 
                y = input('请输入密码')
                if y == li['pwd'][v]:
                    print('验证成功')
                    break
                else:
                     print('密码错误,请重新输入')
            break
        else:
            print('用户名错误请重新输入')
第二种
f = open('user.txt',encoding='utf-8')
user = input('username : ')
pwd = input('password : ')
for line in f:
    l = line.strip().split('|')
    if user == l[0] and pwd == l[1]:
        print("登录成功")
        break
第三种
f = open('user.txt',encoding='utf-8')
dic = {}
for line in f:
    l = line.strip().split('|')
    dic[l[0]] = l[1]
user = input('username : ')
pwd = input('password : ')
# 用户名==用户名 and 密码==密码

# if user in dic and dic[user] == pwd:
#     print('登录成功')
if dic.get(user) == pwd:
    print('登录成功')
#25. 看代码,书写结果(2分) 
name = “海娇
userlist = [‘老狗’,’方惊鸿’] 
userlist.extend(name) 
print(userlist)
结果:
['老狗',’方惊鸿’,“海","娇"]
#26. 列举int、bool、str、list、tuple、dict、set中可以作为字典的Key的类型(2分)
int bool str tuple
#27. 转换(6分,每个1分,最后一个2分)
a. 将字符串s = "alex" 转换成列表
s = ['alex']
b. 将字符串 s = "alex" 转换成元祖
print(tuple(s))
b. 将列表 li = ["alex", "seven"] 转换成元组
print(tuple(li))
c. 将元祖 tu = ('Alex', "seven") 转换成列表
print(list(tuple(li)))
d. 将列表 li = ["alex", "seven"] 转换成字典且字典的key按照 10 开始向后递增
第一种
li = ["alex", "seven"]
le = {}
d = 10
for item in li:
    le[d] = [item,]
    d +=1
print(le)
第二种
li = ["alex", "seven"]
d = {}
k = 10
for i in li:
    d[k] = i
    k += 1
print(d)

原文地址:https://www.cnblogs.com/liuduo/p/7436405.html