继续学习python啦
打卡练习题:菜鸟100实例
041
题目
模仿静态变量的用法。
代码
def varfunc():
var = 0
print(f"var = {var}")
var += 1
if __name__ == '__main__':
for i in range(3):
varfunc()
print()
# 作为类的一个属性
class Static:
StaticVar = 5
def varfunc(self):
self.StaticVar += 1
print(self.StaticVar)
print(Static.StaticVar)
a = Static()
for i in range(3):
a.varfunc()
----------结果----------
var = 0
var = 0
var = 0
5
6
7
8
042
题目
学习使用auto定义变量的用法。
分析
参考菜鸟解析:没有auto关键字,使用变量作用域来实现。
代码
num = 2
def autofunc():
num = 1
print(f"internal block num = {num}")
num += 1
for i in range(3):
print(f"The num = {num}")
num += 1
autofunc()
----------结果----------
The num = 2
internal block num = 1
The num = 3
internal block num = 1
The num = 4
internal block num = 1
043
题目
模仿静态变量(static)另一个案例
分析
菜鸟分析:演示一个python作用域使用方法
代码
class Num:
nNum = 1
def inc(self):
self.nNum += 1
print(f"nNum = {self.nNum}")
if __name__ == '__main__':
nNum = 2
inst = Num()
for i in range(3):
nNum += 1
print(f"The num = {nNum}")
inst.inc()
----------结果----------
The num = 3
nNum = 2
The num = 4
nNum = 3
The num = 5
nNum = 4
044
题目
两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:
X = [[12,7,3], [4 ,5,6], [7 ,8,9]] Y = [[5,8,1], [6,7,3], [4,5,9]]
分析
使用二维列表,结合循环取出X、Y对应的值,相加后放入新的列表中
代码
X = [[12,7,3], [4,5,6], [7,8,9]]
Y = [[5,8,1], [6,7,3], [4,5,9]]
li = [[],[],[]]
for i in range(3):
for j in range(3):
li[i].append(X[i][j] + Y[i][j])
print(li)
方法二:
X = [[12,7,3], [4,5,6], [7,8,9]]
Y = [[5,8,1], [6,7,3], [4,5,9]]
# li = [[],[],[]] -----列表为空,若进行li[i][j]就会报IndexError错
li = [[0,0,0],[0,0,0],[0,0,0]]
for i in range(len(X)):
for j in range(len(X[0])):
li[i][j] = X[i][j] + Y[i][j]
for n in li:
print(n)
**注意:**见上面代码注释,若要用li[i] [j]取某一个元素,列表不能为空,必须每个坑都有元素!!!
045
题目
统计 1 到 100 之和。
代码
sum = 0
for i in range(1, 101):
sum += i
print(f"1到100和:{sum}")
046
题目
求输入数字的平方,如果平方运算后小于 50 则退出。
分析
使用永久循环,获取用户输入和做平方运算,再判断运算结果,若小于50,退出循环;否则进行下一轮。
代码
while True:
num = float(input("输入数字:"))
result = num ** 2
print(result)
if result < 50:
print("结束")
break
如果输入只为整数,就可以对50开平方直接比欸
import math
while True:
num = int(input("输入数字:"))
if num < math.sqrt(50)+1:
print("结束")
break
047
题目
两个变量值互换。
分析
使用python的多元赋值
代码
x = int(input("输入x:"))
y = int(input("输入y:"))
x, y = y, x
print(f"交换后x={x},y={y}")
048
题目
数字比较。
代码
def compare(a, b):
if a > b:
print(f"{a}>{b}")
elif a == b:
print(f"{a}={b}")
else:
print(f"{a}<{b}")
if __name__ == '__main__':
x = int(input("输入x:"))
y = int(input("输入y:"))
compare(x, y)
049
题目
使用lambda来创建匿名函数
分析
lambda 参数:表达式
代码
max = lambda x,y : (x>y)*x + (y>x)*y
min = lambda x,y : (x<y)*x + (y<x)*y
if __name__ == '__main__':
x = int(input("输入x:"))
y = int(input("输入y:"))
print(f"{max(x, y)}>{min(x, y)}")
050
题目
输出一个随机数。
分析
使用random模块
代码
import random
# randint(a,b) 范围[a,b]随机取一个整数
num1 = random.randint(1, 10)
print(num1)
# randrange([start],stop,[step]) 范围前闭后开 参数形式类似于range()
num2 = random.randrange(1, 10, 2)
print(num2)
续上了!