zoukankan      html  css  js  c++  java
  • 【学习整理】第五章 条件、循环和其他语句

    一、print 和 import
    1、同时打印多个表达式
    >>>print 'age:',23 #中间用逗号隔开
    >>>age:23
    2、
    >>>name = "xujie"
    >>>age = "23"
    >>>print name,age # 中间用逗号隔开
    >>>xujie23
     
    3、从模块导入函数
    方式一:import somemodule
    方式二:from somemodule import somefunction (as name) #括号中是为函数名起别名,避免
    相同函数名冲突
    方式三:from somemodule import somefunction1,somefunction2,somefunction3
    方式四:from somemodule import *
    当函数名称相同时:
    module1.open()
    module2.open()
     
    二、另一种赋值方式
    注意:左右数量必须保持一致,否则报错
    1、序列解包赋值
    同时为多个值赋值
    >>>x,y,z = 1,2,3
    >>>print x,y,z
    >>>1 2 3
    序列解包
    >>>value=(1,2,3)
    >>>x,y,z = value
    >>>x
    >>>1
    另一种情况1:
    >>>dict= {'name':'xujie',‘age’:24}
    >>>key,value = dict.popitem()
    >>>key
    >>>age
    >>>value
    >>>24
    另一种情况2:
    a,b,rest*=[1,2,3,4]
    rest的结果是[3,4]
    2、链式赋值
    x = y = somefunction();
     
    3、增量赋值
    也适用于字符串
    >>>x=2
    >>>x += 1
    >>>x
    >>>6
     
    三、语句块:缩进相同4个空格的语句,为一个语句块
    冒号(:)用来标识语句块的开始,块中的每一个语句都是缩进的(缩进量相同)
     
    四、条件和条件语句
    1、布尔值:
    False None 0 "" () [] {} 均表示false
    其他的一切均表示 真值
    所有的值都可以用作布尔值,不需要对他们进行转换
    2、条件执行和if语句
    >>>name = raw_input('what your name?')
    >>>if name.endwith('xujie'):
    >>> print 'hello xujie'
    3、else子句
    >>>name = raw_input('what your name?')
    >>>if name.endwith('xujie'):
    >>> print 'hello xujie'
    >>>else:
    >>> print 'hello stranger'
    4、elif子句
    >>>age = raw_input('how old are you?')
    >>> if age > 0:
    >>> pirnt 'age>0'
    >>> elif age < 0:
    >>> print 'age<0'
    >>> else:
    >>> print 'age = 0'
    5、嵌套代码块
    代码快中又有代码块
     
    6、复杂一点的条件
    1、比较运算符
    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不相等
    2、相等运算符:==
    3、is: 同一性判断
    is 和 == 的区别 is判定的是同一性,而不是相等性,比较的是对象 ==更多的是表示一个数
    4、in 成员资格预算福
    name = raw_input('what is your name?')
    if 's' in name:
    print 'in'
    else:
    print 'not in'
    5、字符串和序列比较
    1、字符串的比较
    >>>alpha"<"beta"
    >>>True
    解释:左右两个字符串的0角标开始比较,形同则往后延续进行比较,直到遇到不同时候,比较的原则是按照ASCII的顺序来的。
    2、序列的比较
    >>>[1,2] < [2,1]
    True
    比较原则同上,从0角标位置一个元素一个元素的比较
    6、布尔运算符(and,or,not)
    例子:
    python支持这种条件比较:
    if number <= 10 and number >=1:
    print ...
    另外python的布尔运算符中,本身具有逻辑短路的特性,同java的 && 和 ||
    扩展:
    a if b else c
    如果b为真,返回a 否则返回c
     
    7、断言
    关键词用:assert,具有if的大概意思 ,满足 xxx条件,则...
    不同于if的是 assert 是只有确保后面的条件成立的时候 程序才能正常工作 否则报错
    例:
    >>>age = 10
    >>>assert 0 < age <100 #此处执行没问题
    >>>age = -1
    >>>assert 0 < age <100 #此处报错
    报错
    五、循环
    1、while
    >>>x = 1
    >>>whle x <= 100
    >>> print x
    >>> x += 1
    2、for循环 (循环集合时使用)
    1、
    例:
    >>>words = ['this','is',‘a’,'apple']
    >>>for word in word:
    >>> print word
    >>> this is a apple
    2、内建函数range()的使用
    第一种使用方式,提供范围:
    >>>range(0,10) #范围是前闭后开
    >>>[0,1,2,3,4,5,6,7,8,9]
    第二种使用方式,提供上限:
    >>>range(10)
    >>>[0,1,2,3,4,5,6,7,8,9] #下限是0,不包括上限
    第三种
    for number in range(1,101): #会打印1-100的数
    print number
    扩展:该函数的第三个参数代表遍历时候的步长
    3、循环遍历字典元素
    d = {'x':1,‘y’:2,'z':3}
    for key in d:
    print key,'corresponds to',d[key]
    应用序列解包
    for key,value in d.item(): #用到了序列解包
    print key,'corresponds',value
    4、一些迭代工具
    1、并行迭代
    a、
    names = ['xiaoming','age']
    age = ['16','24']
    for i in range(len(names)):
    print names[i],"is",ages[1],"years old"
    b、使用内建函数zip():
    通过zip()进行并行迭代时,如果两个遍历序列不等长,短的遍历结束后,整个循环结束
    >>>zip(names,age)
    >>>[(‘xiaoming',16),('age',24)]
    c、在循环中解包元组
    for name,age in zip(names,age): #解包就是左右一对一,’各回各家,各找各妈‘
    print name,'is',age,'years old'
    2、编号迭代
    此处使用python的内建函数 enumerate();
    for index,sttring in enumerate(string):
    if 'xxx' in string:
    string[index] = '[censored]'
     
    3、翻转和排序迭代
    即:reversed() 和 sorted() 两个函数
    作用于序列或者可迭代对象上,不是原地修改对象,而是返回翻转或者排序后的版本
    5、跳出循环
    1、break 结束循环 执行循环后面的代码
    2、continue 调到下一轮循环的开始,结束本次循环, 当次循环的结束,不是整个循环的结束
    6、循环中的else子句
    for和else组合
    from math import sqrt
    for n in range(99,81,-1);
    root = sqrt(n)
    if root = int(root):
    print n
    break
    else:
    print "didn`t find it"
    六、列表推导式——轻量级循环
    例一:
    >>>[x*x for x in range(10)]
    [0,1,4,9,16,25,36,49,64,81]
    例二:
    >>>[x*x for x in range(10) if x % 3 == 0]
    >>>[0,9,36,81]
    例三:
    >>>[(x,y) for x in range(3) for y in range(3)]
    >>>[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2).....(2,2)]
    例四:
    girl = ['alice','bernice','clerice']
    boys = ['chris','arnold','bob']
    [b+'+'+g for b in boys for g in girls if b[0]==g[0]]
    ['chris+clarice','arnold+alice','bob+bernice']
     
    七、三人行
    1、pass
    >>>pass
    >>> #什么也没发生 ,直接跳过
    应用举例:
    写了一个if条件判断,但是if 代码块中的内容还未定,python中空代码块是非法的 此时可以在if 代码块中写一个 pass 程序执行到此 直接跳过
    2、使用del()删除
    1、python同样存在自动的垃圾回收机制 python解释器会负责内存的回收
    2、del()
    >>>x=1
    >>>x.del() #改函数不仅会删除对象的引用,也会删除那个名字本身
    3、exec()和eval()函数
    存在问题:这种函数 存在一种安全问题,若执行用户输入的字符串,存在严重安全问题
    解决办法:作用域的限定
    >>>from math() import sqrt
    >>>scop = {}
    >>>exec ’sqrt = 1‘ in scope #如果不加作用范围,会覆盖math 中sqrt()函数,下面的代码执行就会报错
    >>>sqrt(4)
    >>>2 #说明代码没有被破坏 避免了安全问题
    >>>scope['sqrt']
    >>>1
    1、exec():执行一个字符串
    >>>exec "print 'hello,world'"
    >>>hello world
    2、eval():自动计算python字符串中的表达式,并且返回结果值
    >>>eval('6+2')
    >>>8
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    ExtJs系列教程
    linux 服务器时间 timedatectl命令时间时区操作详解
    aws CloudWatch Events
    AWS Shield
    aws ssm指令
    failed to set bridge addr: "cni0" already has an IP address different from 10.244.0.1/24
    AWS Systems Manager
    Amazon Inspector
    AWS 安全培训
    Amazon Inspector
  • 原文地址:https://www.cnblogs.com/xujie09/p/7138156.html
Copyright © 2011-2022 走看看