zoukankan      html  css  js  c++  java
  • 《think in python》学习-7

    think in python 7

    迭代

    对一个变量可以进行多次赋值 是合法的。

    例如以下:

    bruce = 5
    print bruce
    bruce = 7
    print bruce
    

    因为有了多重赋值 所以=== 的区别就更重要了。

    不过=有时候 也会让你产生歧义

    a=7
    b=a
    a=8
    b ?  #这个时候 b还是 7 ,b已经不再等于a了
    

    更新变量

    赋值操作最常见的形式是更新操作,即变量的新值依赖旧值

    x = 6 
    y = 6 
    x = x+1
    y = y-1
    

    通过加1来更新一个变量,称为增量。
    通过减1来更新一个变量,称为减量。

    whlie语句

    计算机常被用来自动化重复处理某些任务

    countdown 函数 while版本

    def countdown(n):
        while n>0:
            print n
            n = n-1
    
    1. 计算条件,得到True或者False
    1. 如果条件为假,退出while循环,并继续执行后面的语句
    2. 如果为真,执行while语句的语句体,并返回第一步

    这种流程称之为 循环(loop).

    我们写的程序也会出现无限循环的时候,这是因为 我们对值的判断和操作分支有些问题

    def squence(n):
        while n!=1:
            print n
            if n%2==0:
                n = n/2
            else:
                n = n*3+1
    

    这个函数的循环条件是n!=1 所以只要n还没变成1就可能会 一直循环下去。

    break语句

    只有在循环语句体的执行途中,才能知道是不是到了退出循环的时机

    break 可以用来跳出循环

        while True:
            line = raw_input()
            if line = 'done':
                break
            print line
        print 'DONE'
    

    平方根

    循环常用于数值计算,以一个近似值开始,迭代的优化计算结果

    以计算平方根方法(牛顿方法)为例:

        x=3.0  #牛顿方法里面 需要定义一个估计值。
        while True:
            print x
            y = (x+a/x)/2
            if y==x:
                break
            x = y 
    

    算法

    牛顿方法是算法的一个例子,它是解决一类问题的机械化的过程。

    定义算法比更不容易,从一个算不上算法的东西开始可能更简单。当你学习个位数相乘的时候,可能背诵过乘法口诀,其实 你只是记住了100个特别的解答,这种知识不算是算法

    比如要计算n和9的乘积,你可以写下n-1作为十位数,10-n作为个位数,这个小技巧是计算任意个位数和9的乘积的通用方案,算是一个算法。

    def n9(n):
        print "".join([str(n-1),str(10-n)])
    
    

    相似的,你学习过的进位加法,借位减法以及长除法都是算法,
    算法的特点之一是他们不需要仁和聪明才智就能执行,他们是一个机械化的过程,每一步都依照一组简单的规则紧接着上一步进行。

    练习

    1. 重写print_n函数,使用循环而非递归来实现
      def print_n(n):
      while n>0:
          n = n-1
          print n
      
    2. 内置函数eval可以接受一个字符串 并使用python解释器对它进行求。写一个eval_loop 迭代的提示用户 接受他们输入并使用eval求值,直到用户输入done 中断
      def must_done():
          while True:
              u = raw_input("> 
      ")
              if u=="done":
                  break
              print(u)
          print "you input done"
      

    术语(新手建议阅读并尝试理解):

    • 多重赋值(multiple assignment):在程序的执行过程中对同一个变量进行多次赋值
    • 更新(update):一种复制操作,新值依赖于变量的旧值
    • 初始化(initialization):一种赋值操作,给变量增加一个初始的值,以后可以进行更新。
    • 增量(increment):一种更新操作,增加变量的值
    • 减量(decrement):一种更新操作,减少变量的值
    • 迭代(iteration):使用递归函数调用或者循环来重复执行一组语句
    • 无限循环(infinite loop): 一个终止条件永远无法满足的循环
  • 相关阅读:
    第十五周作业
    第十四周作业
    第十三周
    第十二周作业
    第二次考试
    太强了,大佬开源的算法小抄彻底火了
    npm--npm 全局安装路径的修改和环境变量的配置
    239
    238
    学术类论文查看--AMiner
  • 原文地址:https://www.cnblogs.com/iyueyao/p/4189998.html
Copyright © 2011-2022 走看看