Python字典
用戶轉賬
描述
以用戶登陸的程序作為基礎,讓我們來模擬用戶之間的轉賬。
本題默認已使用合法的用戶名 “aaa” 登陸,請將對應賬戶內的金額轉給其他合法用戶。
要求模擬過程(需求):
1. 輸入目標賬號和轉賬金額,如果目標用戶存在,判斷轉賬金額是否大於賬戶原始金額,完成轉賬"Tranfer Success"或者余額不足“Insufficient Funds”。
2. 如果目標用戶不存在,給出信息提示"Wrong User"。
3. 作為模擬程序,如果轉賬成功后我們需要輸出兩個用戶的賬戶金額來查看是否轉賬成功。
賬戶 密碼 初始余額
aaa 123456 10000
bbb 888888 5000
ccc 333333 3000
dic={"aaa":["123456",10000],"bbb":["888888",5000],"ccc":["333333",3000]}
輸入
輸入目標賬號和轉賬金額
代碼
dic={"aaa":["123456",10000],"bbb":["888888",5000],"ccc":["333333",3000]} #題目中給出的字典
ls = ['bbb','ccc'] #定義一個儲存非aaa用戶的列表
counter = input() #輸入轉入的用戶
if counter not in ls:
print('Wrong User')#判斷是否是轉賬給'aaa' or 'bbb'
else:
zz = int(input()) #轉賬金額必須在判斷用戶名是否存在后輸入
if zz > 10000 or zz < 0: # if zz > dic['aaa']:
print('Insufficient Funds')#判斷轉賬金額是否超過'aaa'賬戶的金額或者為負數,此題判斷負數的步驟可有可無
else:
print('Tranfer Success')
print('aaa:{}'.format(10000-zz))
if counter == 'bbb':
print('bbb:{}'.format(dic[counter][1]+zz))
elif counter == 'ccc':
print('ccc:{}'.format(dic[counter][1] + zz))#注意:可以使用format進行輸出,也可以使用其他簡單暴力的方式
用字典來統計詞頻
描述
使用freqDict = eval(input()) 讀入單詞詞頻字典,再讀入一段英文,更新詞頻字典后輸出。
輸入格式
輸入為兩行,第一行是一個字典,形如{'hello': 12, 'world': 10},其中存儲初始的詞頻數據。第二行是一段英文文本。
輸出格式
輸出一行,直接打印輸出更新后的字典。
代碼
freqDict = eval(input()) #輸入一個初始字典
sen = input().split() #用split()將字符串以空格分開,並轉化為列表 注意:不能使用split(' ')
if sen == []: #判斷輸入的字符串是否為空
print(freqDict)
else:
for i in sen: #遍歷列表sen里的每一個元素
if i in freqDict:
freqDict[i]+= 1#如果i在原字典里,則原字典i對應的值+1
else:
freqDict[i] = 1#否則加入i,並為i對應的值賦值1
print(freqDict)
唯一字符
描述
給定一個字符串,找到它的第一個不重復的字符,輸出它的索引。如果不存在這種字符或空串,則返回 -1。
本題字符串中只包含小寫字母。
輸入
python
輸出
0
代碼
from collections import * #引用collections
str1 = input()
ls = list(str1)
Counter = Counter(ls) #用Counter(collections中的函數)將ls中的元素統計在字典Counter中
if str1 == '':
print(-1)#判斷字符串是否為空
else:
for i in range (len(str1)): #循環str1的長度次數
if Counter[ls[i]] == 1:
print(i)
break#如果在字典Counter中,str1的i個元素對應的值為1,則輸出i,然后跳出循環
else:
print(-1)
(關於collections的介紹 https://www.cnblogs.com/Atsuhiro/p/14779204.html)
排序輸出字典中數據
描述
有兩個字典數據如下:
dic1 = {'Tom':21,'Bob':18,'Jack':23,'Ana':20}
dic2 = {'李雷':21,'韓梅梅':18,'小明':23,'小紅':20}
請將dic1 按鍵的大小升序排序,將dic2按值的大小升序排序,輸出dic1的前n個鍵的內容,輸出dic2前n個鍵值對。當n大於元素個數時,按實際元素數量輸出。
輸入格式
輸入一個正整數n
輸出格式
輸出指定個數的排序后的元素
代碼
dic1 = {'Tom':21,'Bob':18,'Jack':23,'Ana':20}
dic2 = {'李雷':21,'韓梅梅':18,'小明':23,'小紅':20}
dic1 = dict(sorted(dic1.items(),key = lambda x:x[0])) #給dic1中的關鍵詞(key)排序,再將轉化后的列表轉化為字典
list_dic2 = sorted(dic2.items(),key = lambda x:x[1]) #給dic2中的數據排序,結果為字典
n = int(input())
ls = []
for i in dic1.keys(): #遍歷dic1中的關鍵詞(key)
ls.append(i)
print(ls[:n])
print(list_dic2[:n])
(用到匿名函數,參見 https://www.cnblogs.com/Atsuhiro/p/14718783.html)
走馬燈數
走馬燈數那題 直接999999/7就好了
代碼不唯一,僅供參考,有疑問歡迎批評指正