1. 程式人生 > >python學習 day8 題型做法總結

python學習 day8 題型做法總結

登錄程序 轉換 兩個 != ice += tuple == 購物

#老男孩全棧7期考試題(一)
#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)

python學習 day8 題型做法總結