Task1:modified accounts
class Account: def __init__(self,name,account_number,initial_amount=10): self._name=name self._card_no=account_number self._balance=initial_amount def deposit(self,amount): self._balance+=amount def withdraw(self,amount): if self._balance<amount: print('余额不足') return self._balance-=amount def info(self): print('持卡人姓名:',self._name) print('持卡人账号:',self._card_no) print('持卡人账户余额:',self._balance) def get_balance(self): return self._balance def main(): print('测试账户1:'.center(30,'*')) a1=Account('Bob','5002311',20000) a1.deposit(5000) a1.withdraw(4000) a1.info() print() print('测试账户2:'.center(30,'*')) a2=Account('Joe','5006692',20000) a2.withdraw(10000) a2.withdraw(5000) a2.info() if __name__=='__main__': main()
Task2:Shapes
(shape.py)
import math class Shape: def info(self): pass def area(self): pass def perimeter(self): pass class Rect(Shape): def __init__(self,x=0,y=0,length=2,width=1): self._x=x self._y=y self._width=width self._length=length def info(self): print(f'矩形左上角顶点坐标:({self._x},{self._y})') print(f'矩形长:{self._length}') print(f'矩形宽:{self._width}') def area(self): return self._length*self._width def perimeter(self): return (self._length+self._width)*2 class circle(Shape): def __init__(self,x=0,y=0,radius=1): self._x=x self._y=y self._r=radius def info(self): print(f'圆心:({self._x},{self._y})') print(f'半径:{self._r}') def area(self): return math.pi*self._r**2 def perimeter(self): return 2*math.pi*self._r class Triangle(Shape): def __init__(self,a=1,b=1,c=1): self._a,self._b,self._c=a,b,c def info(self): print(f'三角形三边长:({self._a},{self._b},{self._c})') def area(self): s=(self._a+self._b+self._c)/2 ans=(s*(s-self._a)*(s-self._b)*(self._c))**0.5 return ans def perimeter(self): return (self._a+self._b+self._c) def main(): print('测试1:'.center(40,'*')) shapes_lst1=[circle(),Rect(),Triangle()] for t in shapes_lst1: t.info() print(f'面积: {t.area():.2f}') print(f'周长: {t.perimeter():.2f}') print() print('测试2:'.center(40, '*')) shapes_lst2 = [circle(x = 2, y = 2, radius = 10), Rect(x = 50, y = 50, length = 10, width = 5), Triangle(a = 3, b = 4, c = 5)] for t in shapes_lst2: t.info() print(f'面积: {t.area():.2f}') print(f'周长: {t.perimeter():.2f}') print() if __name__ == '__main__': main()
(task2.py)
#if use 'from shape import Rect,circle','shape.Rect' could be writed as 'Rect' directly import shape shape_lst=[shape.Rect(5,5,10,5),shape.circle(),shape.circle(1,1,10)] for i in shape_lst: i.info() print(f'面积:{i.area():.2f}') print(f'周长:{i.perimeter():.2f}') print()
Task3:Module_math,random,datetime,string
import math def func(x): return 1/(math.sqrt(2*math.pi)*2)*math.exp(-0.5*(x/2)**2) x=input() y=x.split(',') for i in y: print(f'x={i},f={func(int(i)):.8f}')
Task4:Random Walk
1.random_walk.py
from random import choice class RandomWalk(): def __init__(self,num_points=5000): self.num_points=num_points self.x_values=[0] self.y_values=[0] def fill_walk(self): while len(self.x_values)<self.num_points: x_direction = choice([1, -1]) x_distance = choice([0, 1, 2, 3, 4]) x_step = x_direction * x_distance y_direction = choice([1, -1]) y_distance = choice([0, 1, 2, 3, 4]) y_step = y_direction * y_distance if x_step==0 and y_step==0: continue next_x=self.x_values[-1]+x_step next_y=self.y_values[-1]+y_step self.x_values.append(next_x) self.y_values.append(next_y) def main(): rw = RandomWalk(5) rw.fill_walk() print(rw.x_values) print(rw.y_values) if __name__ == '__main__': main()
2.task4.py
from matplotlib import pyplot as plt from random_walk import RandomWalk from time import sleep n=0 while n<2: n+=1 rw=RandomWalk(50000) rw.fill_walk() plt.figure(figsize = (10, 6), dpi = 128) point_numbers = list(range(rw.num_points)) plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolor='none', s=1) plt.scatter(0, 0, c='grey', edgecolors='none', s=100) plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100) plt.axis('off') plt.show()