zoukankan      html  css  js  c++  java
  • python 学习 之 第二章(条件、循环和其他语句)

    1.    简单的条件执行语句( if )

    num = int( input("enter a number ") )

    if num == 0:

             print("num = 0 ")

    else:

             print("num != 0 ")

    稍微复杂一点的执行语句:

    num = int( input("enter a number ") )

    if num == 0:

             print("num = 0 ")

    elif num > 0:

             print("num > 0 ")

    else:

             print("num < 0 ")

    从上面的例子可以看出,条件判断句,就是根据一个执行语句的结果的bool值,来确定句子下面的语句是否执行,

    if 判断语句(如果为真,执行:后面的句子,否则执行else 或者elif 后面的语句),

    记住if也罢,elif也罢,else也罢,都不能忘记后面的冒号:两个点;否则都是错误的;

    2.    简单的循环执行语句(while)

    4.1 一个简单的循环输出

    x = 1

    while x <= 5:

        print (x)

        x += 1

    1

    2

    3

    4

    5

    4.2 一个稍微复杂一点的while循环:

    name = input("please enter your name: ")

    while name not in ('aiyq195','wgj','yb'):

        print("the name is err ")

        name = input("please enter your name,too: ")

    please enter your name:

    j

    the name is err

    please enter your name,too:

    ni

    the name is err

    please enter your name,too:

    aiyq195

    4.3 判断如何退出while循环

    x = int(input("Enter a number to exit the loop! "))

    while x:

        print ("The number unable to exit the loop! ")

    x = int(input("Enter a number to exit the loop! "))

    在IDE版本中执行上面的语句,得到下面的结果:

    Enter a number to exit the loop!

    8

    The number unable to exit the loop!

    Enter a number to exit the loop!

    -1

    The number unable to exit the loop!

    Enter a number to exit the loop!

    0

    从上面的结果,我们找到了如何退出while循环的条件,也就是while循环退出的条件只有一种可能,就是你的判断条件执行结果为0。

    特别是我们在执行while循环时,使用的判断条件为数字的时候,他不会因为你的值为负数,他就会退出;

    3.    for循环的例子

    5.1 简单的for循环说明

    while循环非常的灵活,它可以用来在任何条件为真的情况下重复执行一个代码块。但是有的时候,需要量体裁衣。比如要为一个集合的每个元素执行一个代码块。这个时候可以使用for语句:

    words = ['this','is','an','ex','parrot']

    for word in words:

    print (word)

    ======================= RESTART: E:/python/pyth/for.py =======================

    this

    is

    an

    ex

    parrot

    可以由上面的句子看出来,一个for循环,他的循环是有一个依据的,也就是,它可能是根据你已经定好的一个列表的或者一个元组、字典里的元素来走它的循环依据;

    5.2 for循环的一个关键字 range()

    for number in range(0,10):

        print(number)

    for number in range(0,10,2):

    print(number)

    在IDE上执行结果如下:

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    0

    2

    4

    6

    8

    查看上面的结果知道,range()函数,可以迭代一些数字,让for循环以此来作为判断条件执行,其中,也包括了步长,也就是第三个参数,你可以由此来确定;

    1.    python 中的赋值语句

    赋值很简单的一个赋值语句就可以搞定,或者一片句子就可以实现的功能;但是也需要稍微的来写些内容,让你记住一些赋值的方法,在你应用的时候,你会发现一些应用时的方便;

    并行赋值句子

    >>> x = 1 ;y = 2

    >>> y

    2

    >>> x

    1

    其实所谓的并行赋值,就是将几个变量的赋值语句用一个分号隔开,然后,写入到一行中;

    序列解包赋值句子

    多个赋值操作可以同时进行:

    >>> x,y,z = 1,2,3

    >>> x

    1

    >>> y

    2

    >>> z

    3

    >>> print (x,y,z)

    1 2 3

    而且,它竟然可以直接调换值;(在c中,需要使用一个临时值,才能实现这个功能)

    >>> x,y = y,x

    >>> print (x,y,z)

    2 1 3

    在python书中,解释道上面所做的事情,叫做序列解包(sequence unpacking) 或递归解包 – 将多个值的序列解开,然后放到变量的序列中。更形象的说明就是下面这个:

    >>> values = 1,2,3

    >>> values

    (1, 2, 3)

    >>> x,y,z = values

    >>> x

    1

    >>> y

    2

    当函数或者方法返回元组(或者其他序列或可迭代对象)时,这个特性尤其有用。

    假如需要获取(或删除)字典中的任意的键、值对,可以使用popitem方法,这个方法将键值作为元组的元素返回。那么这个元组就可以直接赋值到两个变量中:

    >>> dicName = {'name':'aiyq','girlfriend':'who'}

    >>> key,value = dicName.popitem()

    >>> key

    'name'

    >>> value

    'aiyq'

    它允许函数返回一个以上的值,并且打包成元组,然后通过一个赋值语句很容易进行访问。所解包的序列中的元素数量必须和放置在赋值符号=左边的数量完全一致,否则python会在赋值时,引发异常:

    >>> x,y = dicName.popitem()

    >>> print(x,y)

    girlfriend who

    >>> x,y = dicName.popitem()

    Traceback (most recent call last):

      File "<pyshell#19>", line 1, in <module>

        x,y = dicName.popitem()

    KeyError: 'popitem(): dictionary is empty'

    >>> x,y,z = 1,2

    Traceback (most recent call last):

      File "<pyshell#20>", line 1, in <module>

        x,y,z = 1,2

    ValueError: need more than 2 values to unpack

    从上面的内容,再根据popitem方法的应用,可以理解上面的调用的方法;

    >>> dicName = {'name':'aiyq','girlfriend':'who'}

    >>> x,y,z,g = dicName.popitem()

    Traceback (most recent call last):

      File "<pyshell#22>", line 1, in <module>

        x,y,z,g = dicName.popitem()

    ValueError: need more than 2 values to unpack

    也就是你使用方法后,会截取的一个键值字典元素,

    然后,放入到两个你想要存放的变量中,如果你想一次给予多个变量值的时候,就会返回异常;

    然后,如果你在一次给多个值,赋值的时候,如果你也是没有给对对应的变量数时,也一样会报异常:

    链式赋值句子:

    链式赋值(chained assignment) 是将同一个值赋给多个变量的捷径。

    它看起来有些像并行赋值,但是,它处理的是一个值:

    >>> x = y = 1

    >>> x

    1

    >>> y

    1

    其实,它和下面的句子一样;

    x = 1

    y = x

    增量赋值句子

    增量赋值其实就是在等号附近加上 +、-、*、/符号;

    然后,变量左边的值,会等于 你的等号前的符号与等号后的值的运算后的结果;

    如:

    >>> x = 1

    >>> x += 1

    >>> x

    2

    >>> x *= 8

    >>> x

    16

    >>> del x

    >>> x

    Traceback (most recent call last):

      File "<pyshell#45>", line 1, in <module>

        x

    NameError: name 'x' is not defined

    >>> x += 1

    Traceback (most recent call last):

      File "<pyshell#47>", line 1, in <module>

        x += 1

    NameError: name 'x' is not defined

    从上面的结果,就可以看出来,自增赋值的效果是什么样子的;

    它就是一个将你的赋值句子懒省事的一个方法;

    我们想要x = x + 1;这个值的结果;

    但是,我们就这么去写 x += 1;

    这样去获取;其实还是懒人做事,懒省事的做法;

    而且在python中,对于字符串,也是适用的;

    >>> py = 'aiyq'

    >>> py

    'aiyq'

    >>> py += '195'

    >>> py

    'aiyq195'

    >>> py *= 2

    >>> py

    'aiyq195aiyq195'

    真假句子(布尔句子/判断句子)

    一个句子也会有真假,也就是可以做出判断是否正确的选择;

    如 x = 3,这是个赋值语句,但是如果我们这样执行呢?

    x = 3

    x == 4 呢?

    这时候,我们就知道

    >>> x = 3

    >>> x == 4

    False

    它返回了False,这就是一个简单判断句子;

    我们可以使用它来作为一个循环或者if语句的条件来使用;

    2.     python 中的运算符

    运算符,可以让一些数据加减乘除等,也可以判断一些条件是否为真等;作为一个判断的中间者,它来称为运算符;

    比较运算符:

    用着条件中的最基本的运算符就是比较运算符了,他们用来比较其他对象,常用的比较运算符:

    表达式                                                   表达式的含义

    x == y                                                       x  等于 y

    x < y                                                         x 小于 y

    x > y                                                         x  大于y

    x >= y                                                       x 大于等于 y

    x <= y                                                       x 小于等于 y

    x != y                                                       x 不等于 y

    x is y                                                        x 和 y是同一个对象

    x is not y                                                 x 和 y 不是同一个对象

    x in y                                                        x是y容器的成员

    x not in y                                                 x不是y容器的成员(容器,也就序列、元组、字典的)

    对于比较运算符理论上,对于相对大小的任意两个对象都是可以使用比较运算符比较的,并且都会得到一个布尔值的结果。但是,只有在两个对象是相同的或者近似的类型的对象时,比较才有意义。

    比如:我们将一个字符串跟一个数字直接比较,没有什么意义;

    也有的时候,我也在别人的代码中看到过的一个比较符 –  x <> y;

    这个其实的意思就是 x不等于y 的意思;但是虽然给人一个高深的感觉,但是感觉看着讨厌;

    谁都不想让后人看到你写的代码,说:“我去,这什么鬼玩意!”;

    所以,能简单的写出来的代码,不要搞的太复杂;

    其中特殊说明几个运算符:

    相等运算符:

    如果想要知道两个对象是否相等,就需要使用这个运算符。

    但是这个运算符,人们使用的时候,经常会跟 赋值符 = 去混肴;

    好比,我们需要一个判断条件

    num = int(input())

    if num == 1:

        num += 1

        print(num)

    else :

    print(num)

    ====================== RESTART: E:/python/pyth/deng.py ======================

    5

    5

    如果我们使用 一个等号,就相当于赋值了,那样是不能比较的;

    >>> '2' == '2'

    True

    >>> '2' = '2'

    SyntaxError: can't assign to litera

    Is:同一性运算符

    >>> x = y = [1,2,3]

    >>> z = [1,2,3]

    >>> x == y

    True

    >>> x == z

    True

    >>> x  is y

    True

    >>> x is z

    False

    从上面可以看出来,is是判断两个值,指向的对象是否为同一个对象,就算它们的对象的内容一样,但是如果不是同一个对象,它也是返回错误的;

    3.    三个语句:pass、del、exec

    pass 语句:

    有的时候,程序什么事情都不用做,但是这种情况一出现,就应该pass语句出现了;

    pass语句只是作为占位符出现,它没有其他的作用,因为在python中如果有空代码块是非法的,而pass语句就相当于一个过渡,让程序接着走下去;

    >>> pass

    >>> 

    del语句:

    一般来说,python会自动删除那些不再使用的对象,但是,有的时候,我们需要自己删除一些对象,所以,我们就需要使用del语句来实现这个功能;

    exec 和 eval 语句:

    有些时候可能会需要动态的创建python代码,然后将其作为语句执行或作为表达式计算,但是,使用时,一定要仔细考虑;

    exec

    执行一个字符串的语句就是exec 函数实现的功能;

    >>> exec("print("nihao")")

    SyntaxError: invalid syntax

    >>> exec(print("nihao"))

    nihao

    Traceback (most recent call last):

      File "<pyshell#3>", line 1, in <module>

        exec(print("nihao"))

    TypeError: exec() arg 1 must be a string, bytes or code object

    >>> exec("print('nihao')")

    Nihao

    从上面可以看出,exec函数,是将一个字符串内的句子作为一个语句执行           

    但是,exec函数也会造成一个问题,就是下面这个代码段:

    >>> from math import sqrt

    >>> sqrt(4)

    2.0

    >>> int(sqrt(4))

    2

    >>> exec("sqrt = 4")

    >>> sqrt(2)

    Traceback (most recent call last):

      File "<pyshell#10>", line 1, in <module>

        sqrt(2)

    TypeError: 'int' object is not callable

    >>> sqrt

    4

    >>> eval(input("enter an arigh :"))

    enter an arigh :3 + 19 * 2

    41

    而我们从上面可以看出,有的时候,如果我们如果使用了exec函数,会造成上面的调用模块的方法失败,所以使用的时候需要小心;

  • 相关阅读:
    103.Binary Tree Zigzag Level Order Traversal
    6.ZigZag Conversion
    102.Binary Tree Level Order Traversal
    interrupted()和isInterrupted()比较+终止线程的正确方法+暂停线程
    117.Populating Next Right Pointers in Each Node II
    Thread.currentThread()与this的区别
    116.Populating Next Right Pointers in Each Node
    UNIX 技巧: UNIX 高手的另外 10 个习惯
    UNIX 高手的 10 个习惯
    关于CGI:Tomcat、PHP、Perl、Python和FastCGI之间的关系
  • 原文地址:https://www.cnblogs.com/aiyq195/p/6529987.html
Copyright © 2011-2022 走看看