说明
'''
这是《数据结构与算法 Python 语言实现》 (古德里奇)版,每一章书后习题和自己的一些解答,、
我已经买了这本书,因为想在看完每一章后,完成习题,所以记录下来!
这篇文章是第一章的习题内容!因为题目太长,懒得自己书写,我拍下了习题,并且直接用截图作为题目!
'''
巩固题
编写一个Python函数 is_multiple(n, m),用来接收两个整数值 n 和 m,
如果 n 是 m 的倍数,即存在整数 i 使得 n = mi,那么函数返回 True,否则返回 False
def is_multiple(n, m):
return (n % m == 0)
print(is_multiple(4, 2))
不能用乘法、除法、取余的操作来判断传入的数是偶数(返回Ture)
def is_even(k):
return (k & 1 == 0)
print(is_even(5))
# 用减法?
def is_even(k):
k = abs(k)
while k > 1:
k = k - 2
return (k == 0)
print(is_even(10))
传入一个序列,找出其中最大和最小的值,并以一个长度为2的元组形式返回,不能使用max和min
def minmax(data):
small = big = data[0] # 假设非空
for val in data:
if val < small:
small = val
if val > big:
big = val
return small, big
print(minmax([1, 2, 5, 8, 6])) # 结果:(1,8)
接受一个正整数n,返回1~n的平方和
def sum_of_squares(n):
total = 0
for j in range(1, n + 1):
total += j * j
return total
print(sum_of_squares(5)) # 55
# 用推导式来写
def sum_of_squares(n):
return sum(j * j for j in range(1, n + 1))
print(sum_of_squares(5)) # 55
接受一个正整数n,返回1~n中奇数的平方和
def sum_of_squares(n):
total = 0
for j in range(1, n + 1, 2): # 隔两个取一个,从1开始数
total += j * j
return total
print(sum_of_squares(5))
def sum_of_squares(n):
return sum(j * j for j in range(1, n + 1, 2))
print(sum_of_squares(5))
li = [1, 2, 5, 6, 8]
print(len(li)) # 5
print(li[-4]) # 2
print(li[len(li)+(-4)]) # 2
索引规律为:负值+序列长度 即是: k+n
# 虽然很简单,但是“前开后闭”很容易错
range(50,81,10)
for i in range(8, -10, -2):
print(i, end=" ")
def get_num(n):
return [2 ** i for i in range(n)]
print(get_num(9))
import random
def choice(data):
return data[random.randrange(len(data))]
print(choice([1, 2, 3, <