题目36
# 对10个数排序
my_list = [2,2,1,1,3,67,43,22,55,10,11]
print(my_list)
my_list.sort()
print(my_list)
题目37
# 求一个3*3的矩阵对角线元素之和
# 主对角线: 00 11 22
# 副对角线: 02 11 20
def get_diagonal_sum(matrix):
matsize = len(matrix)
sum = 0
for i in range(matsize):
sum += matrix[i][i]
sum += matrix[i][matsize-1-i]
sum -= matrix[matsize//2][matsize//2]
return sum
matrix = []
for i in range(3):
row = []
for j in range(3):
row.append(int(input("请输入一个数字:\n")))
matrix.append(row)
print(get_diagonal_sum(matrix))
题目38
# 有一个已经排好序的数组,现输入一个数,按原来的规律将它插入数组中
# 利用列表的一些现成的方法
# 利用可变数据类型(List,Dict,Set)的特点完成在原有列表中添加新的元素
# 可变和不可变数据类型,可自行了解。这里不做介绍。
def insert_num(my_list:list, num:int):
reserve_flag = False
print(f"Before insert a num = {num}, my_list = {my_list}")
if my_list[0] > my_list[len(my_list) -1]:
reserve_flag = True
my_list.append(num)
my_list.sort(key=None, reverse=reserve_flag)
print(f"After insert a num = {num}, my_list = {my_list}")
num = int(input('请输入一个数字:\n'))
my_list = [1,2,3,4,33,44,55,99]
insert_num(my_list, num)
my_list.reverse()
print(my_list)
insert_num(my_list, num)
print(my_list)
题目39
# 将一个数组逆序输出
# 利用列表切片
def reserve_print(my_list):
return my_list[::-1]
# 自己手动 负的index
def reserve_print1(my_list):
tmp = my_list[:]
list_size = len(my_list)
for i in range(list_size//2):
tmp[i], tmp[-i-1] = tmp[-i-1],tmp[i]
return tmp
nums = [1,23,4,5,6,7,8,9]
# 自己手动 正的index
def reserve_print2(my_list):
tmp = my_list[:]
list_size = len(my_list)
for i in range(list_size//2):
tmp[i], tmp[list_size - 1 -i] = tmp[list_size - 1 -i],tmp[i]
return tmp
print('input list : ', nums, 'id = ', id(nums))
print(reserve_print(nums))
print(reserve_print1(nums))
print(reserve_print2(nums))
print(list(reversed(nums)))
nums.reverse() # 该方法会改变原有的list
print(nums)
nums.reverse() # 为了不改变原有list的顺序,这里要再次反序一下
print('input list : ', nums, 'id = ', id(nums))
题目40
# 定义静态变量 看到这个部分(其实早就有这个感觉),感觉这些题怕是从其它语言来的吧,没有针对python
# 把题改一下,改成类变量
# 类变量的特性:
# 类变量用于类的所有实例共享的属性和方法
# 同样的属性名称同时出现在实例和类中,则属性查找会优先选择实例
# 不是通过实例定义的变量
class MyClass:
# shared_var = 0
def set_value(self, value):
self.value = value
def get_value(self):
return self.value
def get_value2(self):
return self.shared_var1
# 可以在类外定义类变量
MyClass.shared_var = 1234
myclass1 = MyClass()
myclass1.set_value(11)
# print('myclass1.get_value2()',myclass1.get_value2()) # 'MyClass' object has no attribute 'shared_var1'. Did you mean: 'shared_var'?
# 可以在定义实例后,为该实例定义实例变量
myclass1.shared_var = 123
myclass1.shared_var1 = 12345
print('myclass1.get_value2()',myclass1.get_value2())
# 实例.类变量名 这种方式访问的,如果实例变量和类变量重名,优先访问实例变量
print('myclass1.shared_var', myclass1.shared_var)
print('myclass1.get_value()',myclass1.get_value())
# 类名.类变量 这种方式,访问的一定是类变量
print('MyClass.shared_var', MyClass.shared_var)
myclass2 = MyClass()
myclass2.set_value(12)
print(MyClass.shared_var)
print('myclass2.shared_var', myclass2.shared_var)
print('MyClass.shared_var', MyClass.shared_var)
print('myclass2.get_value()',myclass2.get_value())
# 遵循先定义后使用的规则(不这样,会报错的)