-
# 對列表進行排序 ?
numbers = [3, 1, 4, 1, 5, 9, 2] ? sorted_numbers = sorted(numbers) ? print(sorted_numbers) ?# 輸出: [1, 1, 2, 3, 4, 5, 9] ? ??
# 對元組進行排序(注意:元組是不可變的,所以不能直接排序,但可以轉換為列表后排序) ??
tuple_numbers = (3, 1, 4, 1, 5, 9, 2) ? sorted_tuple_numbers =sorted(tuple_numbers) ? print(sorted_tuple_numbers) ?# 輸出: [1, 1, 2, 3, 4, 5, 9] ? ??
# 對字典的鍵進行排序(返回的是鍵的列表) ? dict_example = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2} ? sorted_keys = sorted(dict_example.keys()) ? print(sorted_keys) ?# 輸出: ['apple', 'banana', 'orange', 'pear'] ? ??
# 也可以對字典的項(鍵值對)進行排序,使用items() ? sorted_items = sorted(dict_example.items()) ? print(sorted_items) ?# 輸出: [('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)]
查看全部 -
返回閉包不能引用循環變量,請改寫count()函數,讓它正確返回能計算1x1、2x2、3x3的函數。
def count():
? ?fs = []
? ?for i in range(1, 4):
? ? ? ?def f(j):
? ? ? ? ? ?def g():
? ? ? ? ? ? ? ?return j*j
? ? ? ? ? ?return g
? ? ? ?r = f(i)
? ? ? ?fs.append(r)
? ?return fs
f1, f2, f3 = count()
print(f1(), f2(), f3())查看全部 -
請編寫一個函數calc_prod(list_),它接收一個list,返回一個函數,返回函數可以計算參數的乘積。
from functools import reduce
def calc_prod(list_):
? ?def lazy_prod():
? ? ? ?def f(x, y):
? ? ? ? ? ?return x * y
? ? ? ?return reduce(f, list_, 1)
? ?return lazy_prod
f = calc_prod([1, 2, 3, 4])
f()查看全部 -
對字符串排序時,有時候忽略大小寫排序更符合習慣。請利用sorted()高階函數,實現忽略大小寫排序的算法。
輸入:['bob', 'about', 'Zoo', 'Credit']
輸出:['about', 'bob', 'Credit', 'Zoo']def k(item):
? ?return item.lower()
sorted(['bob', 'about', 'Zoo', 'Credit'], key=k)查看全部 -
請利用filter()過濾出1~100中平方根是整數的數,即結果應該是:1, 4, 9, 16, 25, 36, 49, 64, 81, 100。
import math
def is_sqrt(x):
? ?r = int(math.sqrt(x))
? ?return r * r == x
for item in filter(is_sqrt, range(1, 101)):
? ?print(item)查看全部 -
Python內置了求和函數sum(),但沒有求積的函數,請利用recude()來求積
輸入:[1, 3, 5, 7, 9]
輸出:13579的結果from functools import reduce
def f(x, y):
? ? return x * y
print(reduce(f, [1,3,5,7,9]))
查看全部 -
假設用戶輸入的英文名字不規范,沒有按照首字母大寫,后續字母小寫的規則,請利用map()函數,把一個list(包含若干不規范的英文名字)變成一個包含規范英文名字的list:
輸入:['alice', 'BOB', 'CanDY']
輸出:['Alice', 'Bob', 'Candy']def format_name(s):
? ?return s[0].upper() + s[1:].lower()
for item in map(format_name, ['alice', 'BOB', 'CanDY']):
? ?print(item)查看全部 -
計算平方根可以利用math包的sqrt()函數。
import math
def add(x, y, f):
? ?return f(x) + f(y)
print(add(25, 9, math.sqrt))查看全部 -
通過w的打開方式打開文件,會清空文件的內容,這在很多場景下是不合適的,比如寫系統日志的時候,需要累積隨時間推移的所有數據。
Python提供文件追加內容的打開模式,可以往文件尾部添加內容,又不清空文件原有的內容。
f = open('test.txt', 'a')
f.write('Hello Everyone\n')
f.close()使用a的打開方式打開文件,文件游標默認是在文件的尾部,因此,可以便捷的往文件尾部添加內容,除此以外,文件對象還提供seek()方法,可以移動文件的游標位置,它接受一個參數,表示文件的位置,0:文件首部,1:當前位置,2:文件尾部,通過seek()可以把文件游標移動到文件首部但不刪除文件的內容。
f = open('test.txt', 'a+')
content = f.readlines()
print(content) # ==> []
f.seek(0)
content = f.readlines()
print(content) # ==> ['Hello World\n', 'Hello Python\n', 'Hello Imooc\n']
第一次print(content)的時候,由于文件游標在文件的尾部,所以readlines()讀取不到任何數據,打印了空的結果,第二次print(content)的時候,由于通過seek(0),文件游標移動到了文件的首部,因此readlines()就返回了文件所有的內容。查看全部 -
打開文件之后,就可以讀取文件的內容,文件對象提供多種讀取文件內容的方法。
打開test.txt文件:f = open('test.txt', 'r') # 打開test.txt文件
f.close() # 關閉文件文件對象提供read()方法,可以讀取文件中的若干個字符,它提供一個參數size,可以指定讀取字符的數量。
s = f.read(5)
print(s) # ==> Hello當read()之后,訪問文件的游標就會移動到第六個字符前面,此時,繼續read,將得到Hello后面的結果。
s = f.read(6)
print(s) # ==> ' World'文件對象提供readline()方法,和read()方法類似,可以讀取文件中的若干個字符,它也提供一個參數size,可以指定讀取字符的數量,不過和read()方法不同的是,readline()方法遇到一行結束的時候,就會返回。
f.close()
f = open('test.txt', 'r') # 重新打開文件
s = f.readline(20)
print(s) ?# ==> 'Hello World.\n'readline最多返回一行的所有字符。
文件對象提供readlines()方法,可以讀取多行字符,返回一個列表。它提供一個hint參數,表示指定讀取的行數,沒有指定則默認以列表的形式返回文件所有的字符串。
f.close()
f.open('test.txt', 'r')
s = f.readlines()
print(s) # ==> ['Hello World.\n', 'Hello Python.\n', 'Hello Imooc.\n']查看全部 -
除了文本以外,還有大量的非文本文件,比如圖片、壓縮文件、視頻文件、音樂文件等等,這種文件統稱為二進制文件,在Python中打開二進制文件,需要不同的打開模式。
查看全部 -
open()函數有若干個參數,比較重要的是以下三個參數:
1.文件路徑:指定需要打開的文件的文件路徑
2.打開模式:針對不同文件(二進制文件、文本文件)以及不同操作(讀操作、寫操作),會有不同的打開模式
3.編碼:設定打開文件的默認編碼
查看全部 -
Python很多的操作都是通過內建函數來實現的,比如最熟悉的加減乘除,都是通過內建函數來實現的,分別是__add__、__sub__、__mul__、__truediv__。因此,只要我們的自定義類實現了相關的內建函數,我們的類對象,也可以做到加減乘除。
Rational類雖然可以做加法,但無法做減法、乘法和除法,請繼續完善Rational類,實現四則運算。
查看全部 -
斐波那契數列是由 0, 1, 1, 2, 3, 5, 8...構成。
請編寫一個Fib類,Fib(10)表示數列的前10個元素,print Fib(10) 可以打印出數列的前 10 個元素,len(Fib(10))可以正確返回數列的個數10。
查看全部 -
請給Student 類定義__str__和__repr__方法,使得能打印出'Student: name, gender, score'。
查看全部
舉報