(一)编写加减乘除函数并测试使用
class CalCulate:
@staticmethod
def calculator(flag):
num_1 = float(input("请输第一个数:"))
num_2 = float(input("请输第二个数:"))
if flag == "+": #加法
res = num_1+num_2
elif flag == "-": #减法
res = num_1-num_2
elif flag == "*": #乘法
res = num_1*num_2
else: #除法
while num_2 == 0:
num_2 = float(input("请重新输入被除数:"))
break
res = num_1 / num_2
print("{}{}{}={}".format(num_1, flag, num_2, res))
print("加法运算:")
CalCulate.calculator("+")
print("减法运算:")
CalCulate.calculator("-")
print("乘法运算:")
CalCulate.calculator("*")
print("除法法运算:")
CalCulate.calculator("/")
(二)编写lamda表达式加减乘除函数并使用
addition=lambda a,b:a+b
print(addition(1,3))
subtraction=lambda a,b:a-b
print(subtraction(2,5))
multiplication=lambda a,b:a*b
print(multiplication(4,7))
division= lambda a,b: a/b if b>0 else print('请重新输入被除数')
print(division(3,9))
(三)练习不同的参数类型策略
# 默认值参数:必须出现在函数参数列表的最右端,任何一个默认值参数右边不能有非默认值参数
def say(message,times=3):
print(message*times)
say('Hello ')
# 关键参数:通过关键参数,实参顺序可以和形参顺序不一致
def demo1(a,b,c=5):
print(a,b,c)
demo1(3,6)
demo1(a=7,b=4,c=9)
demo1(c=8,a=3,b=1)
# 可变长度参数:在参数名前加1个星号*或2个星号**
# *parameter用来接收多个位置实参并将其放在元组中
def demo2(*p):
print(p)
demo2(1,2,3)
demo2(1,2)
demo2(1,3,5,7,9)
# **parameter接收多个关键参数并存放到字典中
def demo3(**p):
for item in p.items():
print(item)
print('\n')
demo3(x=1,y=2,z=3)
demo3(a=2,b=4,c=6,d=8)
(四)模拟汉诺塔问题据说古代有一个梵塔,塔内有三个底座 A、B、C,A 座上有 64 个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这 64 个盘子从 A 座移到 C 座,但每次只能允许移动一个盘子。在移动盘子的过程中可以利用 B 座,但任何时刻 3 个座上的盘子都必须始终保持大盘在下、小盘在上的顺序。如果只有一个盘子,则不需要利用 B 座,直接将盘子从 A 移动到 C 即可。编写函数,接收一个表示盘子数量的参数和分别表示源、目标、临时底座的参数,然后输出详细移动步骤和每次移动后三个底座上的盘子分布情况。
def Hanoi_Tower(num, src, dst, temp=None): # 递归算法
if num < 1:
return
global times # 用于声明记录移动次数的变量定义为全局变量
# 递归调用函数自生,先把除最后一个盘子之外的所有盘子移动到临时柱子上
Hanoi_Tower(num-1, src, temp, dst)
# 移动最后一个盘子
print('The {0} Times move:{1}==>{2}'.format(times, src, dst))
towers[dst].append(towers[src].pop())
for tower in 'ABC': # 输出3根柱子上的盘子
print(tower, ':', towers[tower])
times+1
# 把除最后一个盘子之外的其他盘子从临时柱子上移动到目标柱子上
Hanoi_Tower(num-1, temp, dst, src)
times = 1
n = 3
towers = {'A': list(range(n, 0, -1)), # 初始状态,所有的盘子都在A柱上
'B': [],
'C': []
}
# A表示最初放置盘子的柱子,C是目标柱子,B是临时柱子
Hanoi_Tower(n, 'A', 'C', 'B')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)