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