zoukankan      html  css  js  c++  java
  • python实现简单问题(汉诺塔、杨辉三角等)

    最近在学习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即可

    暂且就是这些,后面练习到了还会更新。

  • 相关阅读:
    Asp.Net api接口
    Android Studio 插件官网
    Android官方培训课程中文版(v0.9.5)
    asp.net:验证控件中ValidationExpression的写法
    asp.net:录入数据库的中文变问号
    asp.net:repeater嵌套(常用于新闻等在首页归类显示)
    asp.net:用类来后台绑定数据源
    代码编写横屏的UIView
    MFC去掉win7玻璃效果
    iOS UITableView
  • 原文地址:https://www.cnblogs.com/GF66/p/9785497.html
Copyright © 2011-2022 走看看