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='\n')
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('\n')
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)