參考鏈接: Python集合Set
寫代碼,有如下變量,請按照要求實現每個功能 (共6分,每小題各0.5分)? name = ” aleX”? 1)移除 name 變量對應的值兩邊的空格,并輸出處理結果? 2) 判斷 name 變量對應的值是否以 “al” 開頭,并輸出結果?? 3) 判斷 name 變量對應的值是否以 “X” 結尾,并輸出結果?? 4) 將 name 變量對應的值中的 “l” 替換為 “p”,并輸出結果? 5) 將 name 變量對應的值根據 “l” 分割,并輸出結果。? 6) 將 name 變量對應的值變大寫,并輸出結果?? 7) 將 name 變量對應的值變小寫,并輸出結果?? 8) 請輸出 name 變量對應的值的第 2 個字符?? 9) 請輸出 name 變量對應的值的前 3 個字符?? 10) 請輸出 name 變量對應的值的后 2 個字符??? 11) 請輸出 name 變量對應的值中 “e” 所在索引位置??? 12) 獲取子序列,去掉最后一個字符。如: oldboy 則獲取 oldbo。?
name = " aleX"
?
?
print(name.strip())
?
print(name.startswith('al'))
?
print(name.endswith('X'))
?
print(name.replace('l','p'))
print(name.split('l'))
print(name.upper())
print(name.capitalize())
print(name[1])
print(name[:3])
print(name[3:])
print(name.index('e'))
print(name[:-1])?
有列表data=[‘alex’,49,[1900,3,18]],分別取出列表中的名字,年齡,出生的年,月,日賦值給不同的變量?
data=['alex',49,[1900,3,18]]
name = data[0]
age = data[1]
birth = data[2]
print("名字是{0}年齡是{1}出生年月是{2}".format(name,age,birth))?
用列表模擬隊列(隊列是先進先出,類似于自動扶梯)?
dui = [1,2,3,4,5,6]
dui.insert(len(dui),'ll')
print(dui)
dui.pop(0)
print(dui)?
用列表模擬堆棧(堆棧先進后出,類似于喝酒喝吐了)?
zhan = [1,2,3,4,5,6]
zhan.insert(len(zhan),'ll')
print(zhan)
zhan.pop()
print(zhan)
?
有如下列表,請按照年齡排序(涉及到匿名函數)?
l=[
? ? {'name':'alex','age':84},
? ? {'name':'oldboy','age':73},
? ? {'name':'egon','age':18},
]
?
l.sort(key=lambda item:item['age'])
print(l)
?
1 有如下值集合 [11,22,33,44,55,66,77,88,99,90…],將所有大于 66 的值保存至字典的第一個key中,將小于 66 的值保存至第二個key的值中? 即: {‘k1’: 大于66的所有值, ‘k2’: 小于66的所有值}?
l = [11,22,33,44,55,66,77,88,99,90,50,40,100]
?
dic = {'k1':[],'k2':[]}
for num in l:
? ? if num > 66:
? ? ? ? dic['k1'].append(num)
? ? else:
? ? ? ? dic['k2'].append(num)
?
print(dic)?
2 統計s=’hello alex alex say hello sb sb’中每個單詞的個數? 結果如:{‘hello’: 2, ‘alex’: 2, ‘say’: 1, ‘sb’: 2}? s=’hello alex alex say hello sb sb’? ll = s.split() # 以空格區分? 集合去重實現#? res = set(ll) # 去重? dic = dic.fromkeys(res) #初始化字典? for k in res:? dic[k] = ll.count(k) #填入數據? print(dic)? 字典的setdefault方法實現#? dic = {}? for k in ll:? dic.setdefault(k,ll.count(k))? print(dic)?
1. 有列表l=[‘a’,’b’,1,’a’,’a’],列表元素均為可hash類型,去重,得到新列表,且新列表無需保持列表原來的順序?
l=['a','b',1,'a','a']
new = set(l)
print(new)?
2.在上題的基礎上,保存列表原來的順序?
l=['a','b',1,'a','a']
new = set()
res = []
for d in l:
? ? if d not in new:
? ? ? ? new.add(d)
? ? ? ? res.append(d)
print(res)?
3.去除文件中重復的行,肯定要保持文件內容的順序不變?
?
file = open('C:\Users\liuliangliang\Desktop\UserLoginServiceImplTest.java','r')
file = file.readlines()
s = set()
res = []
for line in file:
? ? if line in file:
? ? ? ? print(line)
? ? ? ? if line? not in s:
? ? ? ? ? ? s.add(line)
? ? ? ? ? ? res.append(line)
?
write = open('C:\Users\liuliangliang\Desktop\UserLoginServiceImplTest','w')
write.writelines(res)?
4.有如下列表,列表元素為不可hash類型,去重,得到新列表,且新列表一定要保持列表原來的順序?
l=[
? ? {'name':'egon','age':18,'sex':'male'},
? ? {'name':'alex','age':73,'sex':'male'},
? ? {'name':'egon','age':20,'sex':'female'},
? ? {'name':'egon','age':18,'sex':'male'},
? ? {'name':'egon','age':18,'sex':'male'},
]
?
s = set()
res = []
?
for i in l:
? ? val = (i['name'],i['age'],i['sex'])
? ? if val not in s:
? ? ? ? print(val)
? ? ? ? s.add(val)
? ? ? ? res.append(i)
print(res)
print(s)?
文件a.txt內容:每一行內容分別為商品名字,價錢,個數,求出本次購物花費的總錢數?
apple 10 3?
tesla 100000 1?
mac 3000 2?
lenovo 30000 3?
chicken 10 3?
import os
?
### 獲取當前文件路徑
pwd = os.getcwd()
### 得到存儲用戶信息的文件路徑
filedir = pwd + '\qingdan'
### 判斷信息文件是否存在,存在即取出并轉換成字典類型數據,否則提示文件不存在退出
if os.path.exists(filedir):
? ? wp = open(filedir, 'r',encoding='utf-8')
? ? sett = wp.readlines()
? ? print(sett)
? ? wp.close()
else:
? ? print("文件不存在!")
? ? exit()
last = 0
for i in sett:
? ? res = i.split()
? ? count = int(res[1])*int(res[2])
? ? last = last + count
print(last)
?
需求:?
用戶名和密碼存放于文件中,格式為:egon|egon123? 啟動程序后,先登錄,登錄成功則讓用戶輸入工資,然后打印商品列表,失敗則重新登錄,超過三次則退出程序? 允許用戶根據商品編號購買商品? 用戶選擇商品后,檢測余額是否夠,夠就直接扣款,不夠就提醒? 可隨時退出,退出時,打印已購買商品和余額?
?
?
import json
import os
?
# 獲取當前文件路徑
pwd = os.getcwd()
# 得到存儲用戶信息的文件路徑
filedir = pwd + '\dic'
listdir =pwd + '\list'
# 判斷信息文件是否存在,存在即取出并轉換成字典類型數據,否則提示文件不存在退出
if os.path.exists(filedir) and os.path.exists(listdir):
? ? wp = open(filedir, 'r')
? ? sett = wp.read()
? ? dic_user = json.loads(sett)
? ? wp.close()
? ? sp = open(listdir,'r')
? ? shop = sp.read()
? ? dic_product = json.loads(shop)
? ? sp.close()
else:
? ? print("文件不存在!")
? ? exit()
?
Tag = True
while Tag:
?
? ? name = input("請輸入用戶名:")
? ? # 判斷用戶名是否存在于文件中
? ? if name not in dic_user.keys():
? ? ? ? print("用戶不存在!")
? ? ? ? continue
? ? passwd = input("請輸入用戶密碼:")
? ? # 判斷用戶名密碼是否正確
? ? if name in dic_user.keys() and passwd == dic_user.get(name).get('passwd'):
? ? ? ? list_info = [{"username": name}]
? ? ? ? cmd = input("輸入你的工資")
? ? ? ? last = int(cmd)
? ? ? ? while Tag:
?
? ? ? ? ? ? print(dic_product)
? ? ? ? ? ? # cap,num = input("___輸入您想要購買的物品編號和個數以空格分開:如'001 2'").split()
? ? ? ? ? ? cap = input("輸入您所購買的物品編碼:").strip()
?
? ? ? ? ? ? if cap? not in dic_product :
? ? ? ? ? ? ? ? print("請輸入正確的物品編碼")
? ? ? ? ? ? ? ? continue
?
? ? ? ? ? ? num = input("輸入您所購買物品的數量:").strip()
?
? ? ? ? ? ? if cap? not in dic_product or not num.isdigit():
? ? ? ? ? ? ? ? print("請輸入正確的物品編碼或購買數!")
? ? ? ? ? ? ? ? continue
?
? ? ? ? ? ? account = int(dic_product[cap][1]) * int(num)
? ? ? ? ? ? if? account <= last:
? ? ? ? ? ? ? ? last = last - account
?
? ? ? ? ? ? ? ? list_info.append({"product":dic_product[cap],"num":num})
? ? ? ? ? ? ? ? quit = input("購買成功,退出輸入q,繼續輸入y")
? ? ? ? ? ? ? ? if quit == 'q':
? ? ? ? ? ? ? ? ? ? Tag = False
? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? else:
?
? ? ? ? ? ? ? ? addin = input("余額不足!充值輸入y,退出輸入q")
? ? ? ? ? ? ? ? if addin == 'y':
? ? ? ? ? ? ? ? ? ? add = input("輸入充值金額:").strip()
? ? ? ? ? ? ? ? ? ? last = int(last) + int(add)
? ? ? ? ? ? ? ? ? ? print("余額為%d" %last)
? ? ? ? ? ? ? ? if addin == 'q':
? ? ? ? ? ? ? ? ? ? Tag =False
? ? ? ? ? ? ? ? ? ? continue
?
? ? ? ? list_info.append({"last_money": last})
? ? ? ? for i in list_info:
? ? ? ? ? ? print(i)
? ? ? ? continue
? ? else:
? ? ? ? if name in dic_user.keys():
? ? ? ? ? ? print("用戶名存在,密碼錯誤")
?
? ? ? ? ? ? dic_user[name]['count'] += 1
? ? ? ? ? ? if dic_user[name]['count'] == 3:
? ? ? ? ? ? ? ? print("輸入錯誤三次,退出程序")
? ? ? ? ? ? ? ? Tag = False
?
input(" ")?
要求:?
打印省、市、縣三級菜單? 可返回上一級? 可隨時退出程序?
import json
import os
?
# 獲取當前文件路徑
pwd = os.getcwd()
# 得到存儲用戶信息的文件路徑
filedir = pwd + '\www'
# 判斷信息文件是否存在,存在即取出并轉換成字典類型數據,否則提示文件不存在退出
if os.path.exists(filedir):
? ? wp = open(filedir, 'r',encoding='utf-8')
? ? sett = wp.read()
? ? data = json.loads(sett)
? ? wp.close()
else:
? ? print("文件不存在!")
? ? exit()
# 定義一個字典類型,存放修改后的字典
diction = data
# 定義一個列表類型,存放修改后的字典
listion = [data]
?
while True:
# 當字典為空時,提示沒有下級,顯示上一層內容
? ? if diction == {}:
? ? ? ? print("沒有下級了!")
? ? ? ? diction = listion[-1]
? ? ? ? listion.pop()
?
? ? for key in diction:
? ? ? ? print(key,end=' |')
? ? agent = input("\n輸入上述名稱查詢,輸入r返回上一層,輸入q退出:")
# 如果輸入信息存在當前字典中,將當前的字典追加進入列表,將當前字典轉換成下級字典
? ? if agent in diction:
? ? ? ? listion.append(diction)
? ? ? ? diction = diction[agent]
# 如果輸入信息是r, 判斷列表為空時提示沒有上一級,不為空返回上一級,當前字典轉換成上一級字典
? ? elif agent == 'r':
? ? ? ? if len(listion) == 0:
? ? ? ? ? ? print("沒有上一級了!")
? ? ? ? else:
? ? ? ? ? ? diction = listion[-1]
? ? ? ? ? ? listion.pop()
# 如果輸入信息是q,退出程序
? ? elif agent == 'q':
? ? ? ? break
? ? else:
? ? ? ? print("輸入有誤,重新輸入")