python实现简单问题(汉诺塔、杨辉三角等)
来源:互联网 发布:java cms内容管理系统 编辑:程序博客网 时间:2024/05/29 14:29
最近在学习python3.6,发现了很多之前新功能,而且很实用
然后之前也没用python写过一些之前C解决的小问题,最近在学习的时候也在练习把之前的小问题实现
汉诺塔问题
代码:
def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else : move(n-1, a, c, b) move(1, a, b, c) move(n-1, b, a, c)
思想:使用中间位置先暂时存放,先把a放到b,然后把下一个a移动到c,之后把b移动到c
杨辉三角问题
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 .....
代码:
def triangles(m): L = [1] n=1 while n<=m: yield L L = [L[x] + L[x+1] for x in range(len(L)-1)]#计算中间值 L.insert(0,1)#给头添加1 L.append(1)#给尾添加1 n+=1
思想:使用了python的generator和列表生成式,generator和函数的区别是,函数是按照代码顺序执行,遇到return或循环最后一行则退出;generator则是调用一次yield语句执行一次,停留到yield语句执行后的状态。
字符串转成浮点小数问题
代码:
def char2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]def str2float(s): n = s.index('.') num = 0 def fn(x, y): return x * 10 + y num += reduce(fn, map(char2num, s[:n])) num += reduce(fn, map(char2num, s[n+1:]))/10**len(s[n+1:]) return num
思路:第一个函数使用字典将字符转化为整形,先使用index属性找到小数点所在的位置,然后分为两部分加,第一部分使用正常的reduce和map,第二部分则计算完后除以10的len(s[n+1:])次方,最后返回num即可
暂且就是这些,后面练习到了还会更新。
阅读全文
0 0
- python实现简单问题(汉诺塔、杨辉三角等)
- 汉诺塔和杨辉三角问题的Python实现
- 【Python】用生成器generator简单实现杨辉三角
- python实现杨辉三角
- 杨辉三角python实现
- python实现杨辉三角
- 杨辉三角 python实现
- 杨辉三角问题 Java和Python实现
- python解决“杨辉三角”问题
- Python解决杨辉三角问题
- python实现杨辉三角(使用生成器generator)
- 用Python语言实现杨辉三角
- 杨辉三角的Python实现
- 杨辉三角python generator实现
- 【Python】用generator实现杨辉三角
- 杨辉三角的Python实现
- Python生成器实现杨辉三角
- Python实现杨辉三角个人理解
- fluent python 读书笔记(第一章)
- C++中string的用法和例子(1) 插入 截取子字符串 删除
- CmakeLists给可执行文件命名时出现的小问题
- html小知识
- 《数据库系统概念》8-选择、投影等关系运算
- python实现简单问题(汉诺塔、杨辉三角等)
- 分布式学习路线__回顾
- Java的23种设计模式
- 初探SSH隧道技术
- hihocoder 1631 Cats and Fish
- jQuery笔记
- 冒泡排序的三种实现
- 数据结构--选择排序
- redis、memcache和mongodb各自的优缺点是什么,怎么选择呢?