-
# 对列表进行排序
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'。
查看全部
举报