程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。


# 函数定义和默认参数
def func(x, y = 500):print(x, y)func(150)
func(100, 200)
func(y = 300, x = 100)# 可变参数
def func(name, *numbers):print(name)print(numbers)func('Tom', 1, 2, 3, 4)# 关键字参数
def func(name, **kvs):print(name)print(kvs)func('Jack', china = 'Beijing', uk = 'London')# 命名关键字参数
def func(*, china, uk): # *用于和普通参数做分割,*args一样效果print(china, uk)func(china = 'Beijing', uk = 'London')  # 必须传入参数名# 复杂情况
def func(a, b, c = 0, *args, **kvs):print(a, b, c, args, kvs)func(1, 2)
func(1, 2, 3)
func(1, 2, 3, 'a', 'b')
func(1, 2, 3, 'a', 'b', china = 'Beijing', uk = 'London')
func(1, 2, 3, *('a', 'b'), **{'china':'Beijing', 'uk':'London'})# 递归的经典例子!
def fib(n):if n < 1:raise ValueErrorelif (n == 1) or (n == 2):return 1else:return fib(n - 1) + fib(n - 2)print(fib(1))
print(fib(2))
print(fib(3))
print(fib(4))
print(fib(5))
print(fib(6))

结果 :

150 500
100 200
100 300
Tom
(1, 2, 3, 4)
Jack
{'china': 'Beijing', 'uk': 'London'}
Beijing London
1 2 0 () {}
1 2 3 () {}
1 2 3 ('a', 'b') {}
1 2 3 ('a', 'b') {'china': 'Beijing', 'uk': 'London'}
1 2 3 ('a', 'b') {'china': 'Beijing', 'uk': 'London'}
1
1
2
3
5
8

写的是一些传参数要注意的地方和一个递归的经典案例,也是求斐波那契数列的

def move(n, source, target, helper):if n == 1:print (source + ' -> ' + target)else:move(n - 1, source, helper, target)print(source + ' -> ' + target)move(n - 1, helper, target, source)move(4, 'A', 'B', 'C')

结果 :

A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
A -> B
C -> B
C -> A
B -> A
C -> B
A -> C
A -> B
C -> B

不知道大家玩没玩过汉诺塔,这是一个汉诺塔的程序,传进去数字多少就会进行多少块的移动

汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

思路

假设3根柱子分别为A、B、C,圆盘数目为n。

1:如果A有一个圆盘,则直接移动至c。

2:如果A有2个圆盘,则A->B,A->C,B->C。

好了这个时候已经可以解决问题了,结束条件为 n==1;

假设当我们在数目为n-1的时候已经解决了移动问题可以成功移动至C,如果又多了一个呢,即n,我们用同样的方法把圆盘移动至B(我们已经可以把n-1个盘子通过B移动至C了,那么通过C移动至B也一样),为什么移动至B了呢,因为多了个盘子(放在最底部的大盘子),我们要向步骤2一样把上面的n-1个盘子看成一个整体,用上一个方法即移动n-1个盘子的方法把上面的n-1个盘子移动至B,然后把新增的那个大盘子移动至C,然后再用移动n-1个盘子对应的方法把B中的n-1个盘子移动至C,就完成了。

Python入门程序【六】相关推荐

  1. python 入门程序_非Python程序员的Python速成课程-如何快速入门

    python 入门程序 This article is for people who already have experience in programming and want to learn ...

  2. Python入门程序

    二.Python入门程序 2.1 Hello Python程序 2.1.1 Python 源程序的基本概念 1.Python源程序就是一个特殊格式的文本文件,可以使用任意文本编辑软件做 Python的 ...

  3. Python入门程序 字符串应用(学号判断程序、密码破解程序、身份证的秘密)

    Python入门程序 字符串应用(学号判断程序.密码破解程序.身份证的秘密) 没想到学校会在大二同时学习Java的的时候一起学Python语言,在这写一些平时的python编程作业. 就从字符串的应用 ...

  4. Python入门程序练习题-温度转换

    Python入门程序练习题-温度转换 题目说明: 温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit).‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪ ...

  5. python入门程序有趣例子_10 个最值得 Python 新人练手的有趣项目

    原标题:10 个最值得 Python 新人练手的有趣项目 作者 | Claire D. Costa 编译 | Wendy 有很多 Python 新手留言问:"Python 入门很久了,但项目 ...

  6. python入门程序异常_Python入门基础(10)_异常_1

    最近有点忙,到现在快一个月没写了,罪过罪过,继续学习 异常:python程序在运行时,如果python解释器遇到一个错误,那么程序就会停止执行,并且会提示一些错误信息,这就是异常. 抛出异常:程序停止 ...

  7. python入门程序异常_Python 入门 之 异常处理

    1.异常处理 (1)程序中的错误分为两种 <1> 语法错误 (这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正) # 语法错误示范 print(111 [1;2;3 ...

  8. Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制

    (课程相关的所有资料代码,已上传至CSDN,请自行下载 https://download.csdn.net/download/qq_34243930/10764180 ) BMR 计算器 1.0 Py ...

  9. Python入门程序【十】

    程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂. class MyClass:def __init__(self, name):self.name = namedef __str__ ...

最新文章

  1. Powershell管理系列(八)Exchange 2013通讯组管理
  2. ASP.NET Core EFCore 之Code First
  3. 【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型
  4. python语言format用法_详解Python中的format格式化函数的使用方法
  5. IT人的好习惯和不良习惯总结
  6. mysql单表操作_mysql单表操作
  7. checkbox怎么判断是否选中
  8. 工具丨超好用的免费AWR分析工具
  9. Visual Studio Code 1.42 发布
  10. 倾斜模型精细化处理_基于倾斜摄影和近景摄影技术的实景三维模型结合(CC与 DPModeler结合)...
  11. 第九讲 博弈论在机制设计中的应用练习题
  12. 解决 【git checkout -b dev origin/dev】报错的问题
  13. ACM题目————STL练习之众数问题
  14. spring教程笔记2
  15. Java学生成绩管理系统(一次学会java类及容器使用,内含java编程小tips)
  16. 远程访问centos系统
  17. Android逆向工程:MIUI系统大揭秘:去不掉的小米账号!
  18. Git使用小技巧之挑拣合并
  19. docker搭建snipe-it
  20. 【Unity小功能开发实战教程】制作跟随倒计时变化的进度条

热门文章

  1. 那些职场高手,都是怎么解决问题的?
  2. 汇总各浏览器核心(js引擎及排版引擎)深究
  3. 房地产年终奖丰厚,移动互联网功不可没
  4. 【Android N7.0】Framework层实现派发HOME按键到Application层的一种简单方案
  5. 计算机存的汉字需要多少,4g的软件可以存储多少个汉字
  6. html5钢琴效果,HTML5 钢琴演奏应用(Music Player)
  7. 基于Android自带插入器的图形波动效果 --转载自李硕老师博客160303
  8. canvas - 酷炫粒子文字效果代码解析
  9. 美团外卖/滴滴20201225面试
  10. gitlab进行协作以及issue的使用说明