~~做过的好玩的题~~
生活随笔
收集整理的這篇文章主要介紹了
~~做过的好玩的题~~
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
lis = [1, 2]
for i in lis:lis.append(i)
print(lis)
# 這是一個死循環,每一次循環,都是再往列表里添加一個元素
# 當下次循環列表的時候,長度就變了
# 這樣就會一直循環,不會停止
import copya = [1, 2, 3, 4, ['a', 'b']] b = a # 引用,除非直接給a重新賦值,否則a變則b變,b變則a變 c = copy.copy(a) # 淺復制,只會拷貝父對象, 不會拷貝父對象中的子對象,所以若a的子對象變則c 變,但是父對象變c不會變 d = copy.deepcopy(a) # 深拷貝,完全拷貝,完全獨立于原對象,a變也不變 a.append(5) # 改變父對象 a[4].append('c') # 改變父對象中的 ['a', 'b']子對象''' a=[1, 2, 3, 4, ['a', 'b','c'],5] b=[1, 2, 3, 4, ['a', 'b','c'],5] c=[1, 2, 3, 4, ['a', 'b','c']] d=[1, 2, 3, 4, ['a', 'b']] '''
'''1.寫函數,計算傳入數字參數的和。(動態傳參)2.寫函數,用戶傳入修改的文件名,與要修改的內容,執行函數,完成整個文件的批量修改操作3.寫函數,檢查用戶傳入的對象(字符串、列表、元組)的每一個元素是否含有空內容。4.寫函數,檢查傳入字典的每-個value的長度 如果大于2,那么僅保留前兩個長度的內容(對value的值進行截斷) ,并將新內容返回給調用者,注意傳入的數據可以是字符、list. dict5.解釋閉包的概念6.寫函數,返回一個撲克牌列表,里面有52項,每-項是一個元組1.例如: [(紅心’,2).(‘草花’,2), .黑桃A']7.寫函數,傳入n個數,返回字典'max :最大值, min' :最小值}例如:min_ max(2,5,7,8,4)返回:{ 'max' :8, 'min' :2}8.寫函數,專門計算圓形的面積 。其中嵌套函數,計算圓的面積,正方形的面積和長方形的面積。調用函數area(“圓形 ,圓半徑)返回圓的面積 。調用函數area("正方形,邊長)返回正方形的面積。調用函數area(”長方形”,長,寬)返回長方形的面積#代碼模板def area():def計算長方形面積():passdef計算正方形面積():passdef計算圓形面積():pass9.寫函數,傳入-個參數n,返回n的階乘 例如:cal(7) 計算7*6*5*4*3*2*110.編寫裝飾器,為多個函數加上認證的功能(用戶的賬號密碼來源于文件),要求登錄成功-次,后續的函數都無需再輸入用 戶名和密碼11.生成器和迭代器的區別?12.生成器有幾種方式獲取value?13.通過生成器寫一個日志調用方法, 支持以下功能。根據指令向屏幕輸出日志。根據指令向文件輸出日志 。根據指令同時向文件&屏 幕輸出8志。以上日志格式如下 2017-10-19 22:07:38 [1] test log db backup 3 2017-10-19 22:07:40 [2] user alex login success #注意:其中[1], [2]是指自日志方法第幾次調用,每調用-次輸出一條日志o代碼結構如下def logger(filename , channel-'file'):"""日志方法:param filename: log filename:param channel: 輸出的目的地,屏幕(terminal), 文件(file), 屏幕+文件(both):return:""". .your code...#調用log_obj = logger(filename="web.log" , channel= 'both' )log_obj._ .next_ _ Olog_obj.send('user alex login success ')14.用map來處理字符串列表把列表中所有人都變成sb,比方alex sb name=[ ' alex','wupeiqi ','yuanhao', ' nezha' ]15.用filter函數處理數字列表,將列表中所有的偶數篩選出來 num=[1,3,5,6,7,8]16.如下,每個小字典的name對應股票名字,shares對應多 少股,price對應股票的價格 portfolio = [{'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'AAPL', ' shares': 50, 'price': 543.22},{'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'HPQ', 'shares': 35, 'price': 31.75},{'name': ' YHOO', ' shares': 45, 'price': 16.35}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]。通過哪個內置函數可以計算購買每支股票的總價 。用filter過濾出, 單價大于100的股票有哪些17.有列表li = ['alex, 'egon', 'smith', pizza', 'alen'],請將以字母“a'開頭的元素的首字母改為大寫字母;18.有列表Ii = ['alex, 'egon', 'smith', pizza', 'alen'],請以列表中每個元素的第二個字母倒序排序;19.有名為poetry. txE的文件,其內容如下,請刪除第三行; 昔人已乘黃鶴去,此地空余黃鶴樓。 黃鶴-去不復返,白云千載空悠悠。 晴川歷歷漢陽樹,芳草蔞蔞鸚鵡洲。 日暮鄉關何處是?煙波江上使人愁。 20.有名為username . txt的文件,其內容格式如下,寫一個程序,判斷該文件中是否存在"alex",如果沒有,則將字符 串"alex"添加到該文件末尾,否則提示用戶該用戶已存在; ''' # 1 def sum(num, *args):for i in args: num = num + iprint(num)sum(1, 2, 3, 4, 5, 6, 7, 8, 9) # 2 import osdef func(filename, old_str, new_str):f1 = open(filename, "r+")f2 = open(filename + ".new", "w+")for i in f1.readlines():if old_str in i:i = i.replace(old_str, new_str)f2.write(i)f1.close()f2.close()os.remove(filename)os.rename(filename + ".new", filename)func("123.txt", "肉", "*") # 3 def func(a):for i in enumerate(a):if i[1].isspace():print("存在空值")breakelse:print("沒有空值")a = ["", "da", " "] func(a) # 4 def func(a):if type(a) is dict:for i in a.keys():if len(a[i]) > 2:a[i] = a[i][0:2]return aelif type(a) is list:count = 0for i in a:if len(i) > 2:a[count] = i[:2]count += 1return aelif len(a) > 2:return a[:2]print(func(a)) # 6 li = []card_color = ["黑桃", "紅心", "梅花", "方塊"] card_num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"]for i in card_color:for j in card_num:li.append((i, j)) print(li) # 7 def max_min(*args):li = []for i in args:li.append(i)li.sort()print('{"max":%s,"min":%s}' % (li[len(li) - 1], li[0]))max_min(1, 8, 9, 6, 3, 7, 4, 5, 69, 8, 1, 5, 5, 1, 11, 3312, 64, 84, 0, 0, 6, 26, -1, -8, -9) # 8 def area(x, *args):def 長方形(x, y):print(x * y)passdef 正方形(x):print(x ** 2)passdef 圓形(r):print(3.14 * (r ** 2))passeval(x + "(*args)")area("正方形", 3) # 9 def func(n):num = 1for i in range(1, n + 1):num *= iprint(num)func(4) # 10 db = {"user": "123","pwd": "456","is": True }def login(func):def inner(*args, **kwargs):while db["is"]:user = input("姓名:")pwd = input("密碼:")if user == db["user"] and pwd == db["pwd"]:print("登陸成功!")db["is"] = Falseelse:print("登錄失敗!")func(*args, **kwargs)return inner@login def 長方形(x, y):print(x * y)pass@login def 正方形(x):print(x ** 2)passdef 圓形(r):print(3.14 * (r ** 2))pass正方形(3)長方形(2, 3)圓形(2) # 14 name=[ ' alex','wupeiqi','yuanhao', ' nezha' ]print(list(map(lambda x:x+" sb",name))) # 15 num = [1, 3, 5, 6, 7, 8] print(list(filter(lambda x: x % 2 == 0, num))) # 16portfolio = [{'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'AAPL', ' shares': 50, 'price': 543.22},{'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'HPQ', 'shares': 35, 'price': 31.75},{'name': ' YHOO', ' shares': 45, 'price': 16.35}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]print(list(filter(lambda i: i["price"] > 100, portfolio))) # 17 li = ['alex', 'egon', 'smith', 'pizza', 'alen'] for index, i in enumerate(li):if i.startswith("a"):li[index] = i.capitalize()print("修改完成!") print(li) # 18 li = ['alex', 'egon', 'smith', 'pizza', 'alen'] li2 = [] for i in li:li2.append((i[1], i))li2.sort()li = [] for i in li2[::-1]:li.append(i[1]) print(li) # 19 import osf = open("123.txt", "r+") f1 = open("123.txt.new", "w+") count = 0for i in f.readlines():if count == 2:count += 1continuecount += 1f1.write(i) f.close() f1.close()os.remove("123.txt") os.rename("123.txt.new", "123.txt") # 20 f = open("123.txt", "r+") if "alex" not in f.read():f.write("alex")print("已添加") else:print("有") f.close()
不通過clear()來清空列表
lst = [1, 2, 3, 4] for i in lst:lst.pop() print(lst) # [1, 2]for 循環是不能夠往回走的,比如我第一次for i in lst 那我的 i 拿到的就是0
無論我列表怎么變,我第二次for i in lst 那我拿到的 i 就是1
所以 上述循環,先刪掉標號3,再刪掉標號2,然后就循環完了,就跳出了
lst = [1, 2, 3, 4] for i in lst:lst.pop(0) print(lst) # [3, 4]原因同上,本質上就是循環兩次!
lst = [1, 2, 3, 4] for i in lst:lst.remove(i) print(lst) # [2, 4]一樣的原因~
lst = [1, 2, 3, 4] for i in lst:del lst[i] print(lst) # IndexError: list assignment index out of range很明顯 一步一步循環來看
第一次循環,沒什么問題
第二次就出問題了,此時若是執行 del lst[i] 刪掉的就是列表角標為 3 的元素
而整個列表的最大角標也才是 2 ,所以就報錯了!
那我們可不可以這么想,我循環一遍列表的長度,然后刪最后一個數,不就行了嗎?
那我們就可以這樣來操作:
lst = [1, 2, 3, 4] for i in range(len(lst)-1,-1,-1):del lst[i] print(lst) # []當然我們也可以直接”寫死“這一段程序
lst = [1, 2, 3, 4] for i in range(len(lst)):del lst[-1] print(lst) # []還有一種比較“討巧”的方式,那就是我人為的復制出一個列表來,然后循環復制出來的列表
這樣既不耽誤原來的,也能夠達到目的
lst = [1, 2, 3, 4] lst1 = lst.copy() for i in lst1:lst.remove(i) print(lst) # []講道理熬!如果你對深淺拷貝不是很了解,建議這里直接用深拷貝!
import copylst = [1, 2, 3, 4] lst1 = copy.deepcopy(lst) for i in lst1:lst.remove(i) print(lst) # []不通過clear()來清空字典
dic = dict.fromkeys("12345", 1) for i in dic:dic.pop() print(dic) # RuntimeError: dictionary changed size during iteration報錯了?就算沒有達成目的,也不能報錯啊?(畢竟隔壁的列表都沒有報錯)
這是因為,字典的迭代的時候,改變了原來的大小,就會報錯
(雖然列表也變了,但還是不報錯,你氣不氣?)
那就用取巧的方法唄!
dic = dict.fromkeys("12345", 1) dic1 = dic.copy() for i in dic1:dic.pop(i) print(dic) # {}一招鮮!吃遍天!
深淺copy
import copya = [1, 2, 3, 4, ['a', 'b']] b = a # 引用,除非直接給a重新賦值,否則a變則b變,b變則a變 c = copy.copy(a) # 淺復制,只會拷貝父對象, 不會拷貝父對象中的子對象,所以若a的子對象變則c 變,但是父對象變c不會變 d = copy.deepcopy(a) # 深拷貝,完全拷貝,完全獨立于原對象,a變也不變 a.append(5) # 改變父對象 a[4].append('c') # 改變父對象中的 ['a', 'b']子對象''' a=[1, 2, 3, 4, ['a', 'b','c'],5] b=[1, 2, 3, 4, ['a', 'b','c'],5] c=[1, 2, 3, 4, ['a', 'b','c']] d=[1, 2, 3, 4, ['a', 'b']] '''
'''1.寫函數,計算傳入數字參數的和。(動態傳參)2.寫函數,用戶傳入修改的文件名,與要修改的內容,執行函數,完成整個文件的批量修改操作3.寫函數,檢查用戶傳入的對象(字符串、列表、元組)的每一個元素是否含有空內容。4.寫函數,檢查傳入字典的每-個value的長度 如果大于2,那么僅保留前兩個長度的內容(對value的值進行截斷) ,并將新內容返回給調用者,注意傳入的數據可以是字符、list. dict5.解釋閉包的概念6.寫函數,返回一個撲克牌列表,里面有52項,每-項是一個元組1.例如: [(紅心’,2).(‘草花’,2), .黑桃A']7.寫函數,傳入n個數,返回字典'max :最大值, min' :最小值}例如:min_ max(2,5,7,8,4)返回:{ 'max' :8, 'min' :2}8.寫函數,專門計算圓形的面積 。其中嵌套函數,計算圓的面積,正方形的面積和長方形的面積。調用函數area(“圓形 ,圓半徑)返回圓的面積 。調用函數area("正方形,邊長)返回正方形的面積。調用函數area(”長方形”,長,寬)返回長方形的面積#代碼模板def area():def計算長方形面積():passdef計算正方形面積():passdef計算圓形面積():pass9.寫函數,傳入-個參數n,返回n的階乘 例如:cal(7) 計算7*6*5*4*3*2*110.編寫裝飾器,為多個函數加上認證的功能(用戶的賬號密碼來源于文件),要求登錄成功-次,后續的函數都無需再輸入用 戶名和密碼11.生成器和迭代器的區別?12.生成器有幾種方式獲取value?13.通過生成器寫一個日志調用方法, 支持以下功能。根據指令向屏幕輸出日志。根據指令向文件輸出日志 。根據指令同時向文件&屏 幕輸出8志。以上日志格式如下 2017-10-19 22:07:38 [1] test log db backup 3 2017-10-19 22:07:40 [2] user alex login success #注意:其中[1], [2]是指自日志方法第幾次調用,每調用-次輸出一條日志o代碼結構如下def logger(filename , channel-'file'):"""日志方法:param filename: log filename:param channel: 輸出的目的地,屏幕(terminal), 文件(file), 屏幕+文件(both):return:""". .your code...#調用log_obj = logger(filename="web.log" , channel= 'both' )log_obj._ .next_ _ Olog_obj.send('user alex login success ')14.用map來處理字符串列表把列表中所有人都變成sb,比方alex sb name=[ ' alex','wupeiqi ','yuanhao', ' nezha' ]15.用filter函數處理數字列表,將列表中所有的偶數篩選出來 num=[1,3,5,6,7,8]16.如下,每個小字典的name對應股票名字,shares對應多 少股,price對應股票的價格 portfolio = [{'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'AAPL', ' shares': 50, 'price': 543.22},{'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'HPQ', 'shares': 35, 'price': 31.75},{'name': ' YHOO', ' shares': 45, 'price': 16.35}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]。通過哪個內置函數可以計算購買每支股票的總價 。用filter過濾出, 單價大于100的股票有哪些17.有列表li = ['alex, 'egon', 'smith', pizza', 'alen'],請將以字母“a'開頭的元素的首字母改為大寫字母;18.有列表Ii = ['alex, 'egon', 'smith', pizza', 'alen'],請以列表中每個元素的第二個字母倒序排序;19.有名為poetry. txE的文件,其內容如下,請刪除第三行; 昔人已乘黃鶴去,此地空余黃鶴樓。 黃鶴-去不復返,白云千載空悠悠。 晴川歷歷漢陽樹,芳草蔞蔞鸚鵡洲。 日暮鄉關何處是?煙波江上使人愁。 20.有名為username . txt的文件,其內容格式如下,寫一個程序,判斷該文件中是否存在"alex",如果沒有,則將字符 串"alex"添加到該文件末尾,否則提示用戶該用戶已存在; ''' # 1 def sum(num, *args):for i in args: num = num + iprint(num)sum(1, 2, 3, 4, 5, 6, 7, 8, 9) # 2 import osdef func(filename, old_str, new_str):f1 = open(filename, "r+")f2 = open(filename + ".new", "w+")for i in f1.readlines():if old_str in i:i = i.replace(old_str, new_str)f2.write(i)f1.close()f2.close()os.remove(filename)os.rename(filename + ".new", filename)func("123.txt", "肉", "*") # 3 def func(a):for i in enumerate(a):if i[1].isspace():print("存在空值")breakelse:print("沒有空值")a = ["", "da", " "] func(a) # 4 def func(a):if type(a) is dict:for i in a.keys():if len(a[i]) > 2:a[i] = a[i][0:2]return aelif type(a) is list:count = 0for i in a:if len(i) > 2:a[count] = i[:2]count += 1return aelif len(a) > 2:return a[:2]print(func(a)) # 6 li = []card_color = ["黑桃", "紅心", "梅花", "方塊"] card_num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"]for i in card_color:for j in card_num:li.append((i, j)) print(li) # 7 def max_min(*args):li = []for i in args:li.append(i)li.sort()print('{"max":%s,"min":%s}' % (li[len(li) - 1], li[0]))max_min(1, 8, 9, 6, 3, 7, 4, 5, 69, 8, 1, 5, 5, 1, 11, 3312, 64, 84, 0, 0, 6, 26, -1, -8, -9) # 8 def area(x, *args):def 長方形(x, y):print(x * y)passdef 正方形(x):print(x ** 2)passdef 圓形(r):print(3.14 * (r ** 2))passeval(x + "(*args)")area("正方形", 3) # 9 def func(n):num = 1for i in range(1, n + 1):num *= iprint(num)func(4) # 10 db = {"user": "123","pwd": "456","is": True }def login(func):def inner(*args, **kwargs):while db["is"]:user = input("姓名:")pwd = input("密碼:")if user == db["user"] and pwd == db["pwd"]:print("登陸成功!")db["is"] = Falseelse:print("登錄失敗!")func(*args, **kwargs)return inner@login def 長方形(x, y):print(x * y)pass@login def 正方形(x):print(x ** 2)passdef 圓形(r):print(3.14 * (r ** 2))pass正方形(3)長方形(2, 3)圓形(2) # 14 name=[ ' alex','wupeiqi','yuanhao', ' nezha' ]print(list(map(lambda x:x+" sb",name))) # 15 num = [1, 3, 5, 6, 7, 8] print(list(filter(lambda x: x % 2 == 0, num))) # 16portfolio = [{'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'AAPL', ' shares': 50, 'price': 543.22},{'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'HPQ', 'shares': 35, 'price': 31.75},{'name': ' YHOO', ' shares': 45, 'price': 16.35}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]print(list(filter(lambda i: i["price"] > 100, portfolio))) # 17 li = ['alex', 'egon', 'smith', 'pizza', 'alen'] for index, i in enumerate(li):if i.startswith("a"):li[index] = i.capitalize()print("修改完成!") print(li) # 18 li = ['alex', 'egon', 'smith', 'pizza', 'alen'] li2 = [] for i in li:li2.append((i[1], i))li2.sort()li = [] for i in li2[::-1]:li.append(i[1]) print(li) # 19 import osf = open("123.txt", "r+") f1 = open("123.txt.new", "w+") count = 0for i in f.readlines():if count == 2:count += 1continuecount += 1f1.write(i) f.close() f1.close()os.remove("123.txt") os.rename("123.txt.new", "123.txt") # 20 f = open("123.txt", "r+") if "alex" not in f.read():f.write("alex")print("已添加") else:print("有") f.close()
小姐姐的一道問題
v1 = {'alex', '武sir', '黑哥'} v2 = [] while True:a = input("請輸入:")if a.upper() != "N":if set(a) < v1:v2.append(a)else:v1.add(a)else:breakprint(v1, v2)轉載于:https://www.cnblogs.com/jevious/p/11143258.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的~~做过的好玩的题~~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tp5 隐藏index.php
- 下一篇: uniGUI试用笔记(一)