zoukankan      html  css  js  c++  java
  • [python学习笔记]条件,循环和其他语句

           1,隐藏的print,import属性。

          首先我们之前了解过print和import,它依然隐藏着更多的特性。对于Print来说,逗号的作用就很明显,比如print 'age:',42 ,执行后逗号会自动转变为空格使之成为一个连贯的字符串。age: 42.

          另外import,把某一事件作为另一事件导入。从模块导入函数时可以用import somemodule,或者from somemodule import somefunction 等。另外可以在语句末增加一个as子句,在该子句后给出名字,或者为整个字句提出别名。例如import math as foobar .foobar.sqrt(4) 。

           2,赋值魔法

            多个赋值同时进行,比如x,y,z=1,2,3,还可以进行调换x,y=y,x。事实上这里所作的事情就做序列解包,先将多个值的序列解开再放到要赋值的序列中。但必须保证等号两边的数量完全一样否则会发生异常。

           链式赋值,是将同一个值赋给多个变量的捷径,x=y=4.

           增值赋值,类似C中的赋值。

          5.条件和条件语句

             布尔值,在python中 false none 0 "" [] {}都会被看做是假,换句话说,标准值false,none ,所有类型的数字0,空序列,以及空字典都被视为假。其他的一切都被视为真,另外ture和false可以被看做是1和0.比如ture+false+3,执行该语句则结果为4.记住所有的值都可以被看所是布尔值,且不需要进行显示转换,规则就是上面所说的。

          if,else,以及elif

              if  (条件)

                       成立

                else://注意冒号

              多条件时用elif,另外也可以用and 或 or来增加条件。

            比较运算符

            相等运算符 ==

            is 同一运算符,此处注意的是is用来判断两个列表是否有同一性而不是相等性,比如x=y=[1,2,3],z=[1,2,3],此时我们说x,y有同一性而x和z就没有同一性。则x is y返回ture,x is z 返回false。

             另外x is not y是表达相反的意思。

              in 成员资格符,用来判断该成员是否在列表或者字符串或者字典中。

              字符串和序列比较,字符串可以按照字母顺序排列进行比较。 “alpha”<"beta" 返回值为ture

             6.循环,

             while循环,for循环。

            7.迭代工具

               程序可以同时迭代两个序列,比如有两个下面的列表。

                names=['anne','beth','george','damon']

                age=[12,32,33,14]

                如果想打印名字和对应的年龄,则可以向下面这样做。

               for i in range(len(names)):

                    print names[i],'is',age,'years old'

               在这里i是循环索引的标准变量名。

               另外zip函数可以用来进行并行迭代,把两个序列压缩在一起,然后返回一个元组的列表,zip函数作用于任意多的序列,关于它很重要的一点是zip可以应付不等长的序列,等最短的用完的时候就会停止。

              3. 翻转和迭代排序

                sort([2,3,1,6,3,2])运行结果为

                [1,2,2,3,3,6]。同样对于字符串也适用

               reversed().翻转排序

               >>> list(reversed('hello,world'))

               ['d', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'h']

              4.跳出循环,break和continue

              5.pass什么什么都不做。继续执行下面的语句。

              6.del 删除。

              7.使用exec和eval执行和求值字符串。有些时候很可能要动态的创造python代码,然后将其作为语句执行或作为表达式计算,注意执行存储在字符串中的python代码,会有很严重的潜在安全漏洞,如果程序将用户提供的一段内容中的一部分字符串作为代码执行,程序可能会失去对代码执行的控制,这种情况在网络应用程序,比如CGI脚本中尤其危险。

                此处exec可用来执行python代码比如exec“print 'hello world!'”则语句print 'hello world'就会被执行。

                使用简单形的exec语句绝不是好事,很多情况下可以给它提供命名空间(放置变量的地方)否则将会破坏原有的python代码比如,      

    >>> from math import sqrt
    >>> exec "sqrt=1"
    >>> sqrt(4)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'int' object is not callable

                因为exec动态的创建pthon使得sqrt原本的功能不可用。所以通过增加in<scope>来实现

              

    >>> from math import sqrt
    >>> sqrt(4)
    2.0
    >>> scope={}
    >>> exec 'sqrt=1'in scope
    >>> sqrt(4)
    2.0
    >>> scope['sqrt']
    1

    可以看到将exec代码放到命名空间scope中,潜在的破坏性就会消失,,因为通过exec赋值的变量只能在它的作用域内有效。可以将scope打印出来。看看其组成,通过测试可知scope是一个字典的形式,默认情况下只有_builtins_一个键,当然本例加了一个sqrt。

           eval函数,同样作为内建函数,exec执行一系列的 python代码,而eval会计算python表达式。并返回结果的值。比如可以用eval创建一个计算器。    

    >>> eval(raw_input("please enter pxpression:"))
    please enter pxpression:1+2+3*23
    72

  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/qxhcpp/p/2525902.html
Copyright © 2011-2022 走看看