最新公告
  • 欢迎光临icbug创客,本站所有的文章全部开放!部分资源需付费!立即加入我们会员
  • 18.Python运算与控制循环

    18.Python运算与控制循环

    布尔值(bool)

    True : 非 0 的数字,非空的(字符串、列表、元组、字典) False: 0 '' () [] {} None 布尔值可以通过逻辑运算符 and(且)、or(或)、not(非)来运算 and(且)运算,所有条件都符和才为 True。

    >>> True and True
    True
    >>> True and False
    False
    >>> False and False
    False
    >>>

    or(或)运算,叧要其中有一个为 True,都为 True

    >>> True or False
    True
    >>> True or True
    True
    >>> False or False
    False
    >>>

    not(非)运算

    >>> not True
    False
    >>> not False
    True
    >>>

    空值:空值为 None;

    None 不能理解为 0;0 是有意义的,None 是一个特殊的空值; 非 且 或 (执行先后顺序)。

    自增运算

    其他语言:

    Var int i
    i = 0
    i++ # 等同后面 i = i+1
     printf(i)

    Python:

    i = 10
    i += 1 #等同后面 i = i+1
    i += 2 #等同后面 i = i+2
    i -= 1 #等同后面 i = I-1
    i *= 1 #等同后面 i = i*1
    i /= 1 #等同后面 i = i/1

    比较关系运算符

    运算符 描述
    <> 检查两个操作数的值是否相等,如果值不相等,则条件变为真。Python与Pascal等特有方式,java和c没有,在Python3废弃了
    > 检查左操作数的值是否大于右操作数的值,如果是,则条件成立
    < 检查左操作数的值是否小于右操作数的值,如果是则条件成立
    >= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立
    <= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立
    逻辑运算符

    看一下输出什么?

    or 和 and 顺序比较(and>or)

    >>>True or False and False
    True

    如果先算 or 就会输出:False

    not 和 and 顺序比较(not>and)

    >>>not False and False
    False

    如果先算 and 就会输出:True

    not 和 or 顺序比较(not>or)

    >>>not False or True
    True

    如果先算 or 就会输出:False

    无意义的逻辑:

    >>> True or False
    True

    后面如何写如何改变输出都是 True

    >>>False and True
    False

    实战(面试题):

    闰年是公历中的名词:

    普通年:能被 4 整除但不能被 100 整除的年为普通闰年。(如 2004 年就是闰年,1999 年不是闰年);

    世纪年:能被 400 整除的为世纪闰年。(如 2000 年是世纪闰年,1900 年不是世纪闰年);

    year = int(input('请输入一个年份:'))
    if (year % 4) == 0 and (year % 100) != 0 or (year % 400) == 0:
     print('{0}是闰年'.format(year))
    else:
     print('{0}不是闰年'.format(year))

    运行结果如下:


    Python流程控制

    正常流程(如下图):

    流程控制三步骤:

    if 判断 ,for 循环:广度循环 while 循环:深度循环

    if语句

    if语句判断语句,只有满足if条件才会执行if下的语句

    关键词: ifelse,elif

    elif : 为else if的缩写,可以有多个elif但是我们只能用一个else

    if的格式

    if 语句1 :
        block 语句块
    elif 语句2:
        block
    else:
        block
    

    那么我们这里的:有什么作用,它的作用是用来区分我们的代码之间的层次的

    例子:

    age = 18
    if age >= 18:
     print('你巫绉长大了')
    elif age >= 6:
     print('孩子 你还小')
    else:
     print('hello 小 baby 叔叔带你去游乐场')

    在这里我们需要处理好我们的判断语句,减少我们没有意义的判断

    一定要区分if elif和 if if 的区别

    例子:

    num = 10
    #if elif 是一个判断,一个条件执行后就不会有第二个条件执行
    if num < 30:
     print('< 30')
    elif num < 100:
     print(' < 100')
    # if if 是两个不同的判断,不影响
    if num < 30:
     print('< 30')
    if num < 100:
     print('< 100')

    for循环

    1. for 循环的格式:

    for 变量 in 可迭代对象:

    block 循环语句块

    什么叫做可迭代对象?

    我们把可以通过 for...in...这类语句迭代读取⼀条数据供我们使用的对象称之为可迭代对象(Iterable)

    循环示例:

    for i in range(10): #一个参数
     print(i,end='-')
    for i in range(2,10): #两个参数
     print(i,end='-') #带有步长 range
    for i in range(2,10,2): #三个参数
     print(i,end='-') #字符串癿遍历 
    name = 'icbug'
    for i in name:
     print(i)

    特殊的for循环示例:

    a= [(1,2),(3,4)]
    for i in a:
     print(i[0])
    #i,j = (1,2) 序列解包赋值
    for i,j in a:
     print('这是 i %s'%i)
     print('这是 j %s'%j)

    嵌套循环:

    嵌套 for 循环的格式:

    for 条件 1:

    条件 1 满足时,做的事情 1

    for 条件 2:

    条件 2 满足时,做的事情

    嵌套 for 循环的规律:

    外局循环一次

    内局循环一遍

    实战(打印9×9乘法表)

    for i in range(1,10):# i =1 i = 2
     for j in range(1,i+1):#(1,2) i1,2
     print('%d x %d = %d\t'%(j,i,i*j),end='')
    print()

    注意:这里我们是外层循环一次,内层循环一次。

    while循环

    while 循环,while 循环和 for 循环不同,for 循环是一个广度遍历,而 while 循环是一个深度遍历,

    while 循环,指当满足 while 的条件的时候,就一直循环执行 while 的语句块,直到不满足条件

    格式:

    while (条件):
        条件满足时做的事情
       else:
        条件不满足时做的事情

    如果条件一直满足就形成了死循环

    while普通示例:

    i = 1
    while i > 5:
        print('hello')
     else:
        print('bye!')

    while的嵌套用法:

    n = int(input('请输入你想要的数字'))
    i = 1
    while i <= n:
     j = 1
     while j <= i:
     print('*',end='')
     j += 1
     print()
     i += 1

    流程控制词(面试题)

    pass,continue,break

    循环是让计算机重复做任务最有效率的方法

    pass:

    只在任何缩进的语句块部分,只起到占位作用,什么事情都不会做,只是起到满足python语法部分

    break:语句可以再循环过程中直接退出循环,continue语句可以提前结束本轮循环,并开始下一轮循环

    推导式(面试题)

    列表推导式

    列表推导能非常简介的构造一个新的列表:只是用一个简介的表达式进行变形转换

    语法:[变量for变量in 可迭代对象]

    比如现在我们要生成一个列表,列表中的元素为 0-10,首先我们不用列表推寻式,该如何来实现?

    result1 = []
    for i in range(10):
     result1.append(i)
    print(result1)
    如何使用列表推寻式
    result = [i for i in range(10)]
    print(result)

    相比上方的代码是否简介了很多呢?

    那么我们继续,如何使用列表推寻式求出对象的偶数呢?

    result = [i for i in range(10)if i % 2 ==0 ]

    比如现在有一个列表L = [[1,2,3],[4,5,6],[7,8,9]]

    我们需要求出1/4/7和1/5/9元素,那么我们应该如何取出

    看代码:

    L = [[1,2,3],[4,5,6],[7,8,9]]
    result = [i[0] for i in L]
    print(result)

    运行结果如下

    [1,4,7]

    那么求出1,5,9代码如下

    L = [[1,2,3],[4,5,6],[7,8,9]]
    result1 = [L[i][i] for i in range(len(L))]
    print(result)

    运行结果如下:

    [1,5,9]

    字典推导式

    字典和集和推导式是该思想的延续,语法差不多,不过产生的是集合和字典而已。

    dic2 ={k:v for k,v in {'name':'for','age':18}.items()}
    集合推导式

    集和推导式跟列表推导式非常相似,唯一区别在于用{}代替[]

    L = [1,2,3,1,2,3,4]
    set1 = {i for i in L}
    print(set1)
    元组生成器
    a = (i for i in range(5))
    for i in a:
     print(i)

    深浅拷贝

    定义

    深拷贝:

    拷贝所有对象,包括顶级对象以及嵌套对象,所以原始对象的改变不会造成深拷贝里任何子元素的改变

    浅拷贝:

    叧拷贝顶级对象, 没有拷贝嵌套对象,所以原始数据改变,嵌套对象会改变!

    import copy
    a = [1,2,3,4,[5,6,7,9,10]]
    b = a
    print('a 癿 di:%s,b 癿 id:%s'%(id(a),id(b)))
    c = copy.copy(a)
    print(id(c))
    d = copy.deepcopy(a)
    print(id(d))
    a.append(8)
    a[4].append(9)
    print(a)
    print(b)
    print(c)
    print(d)
    icbug创客严格遵守文章协议!请勿侵犯作者权益复制直接转载,如需转载请标明出处!
    icbug创客 » 18.Python运算与控制循环

    1 评论

    发表评论

    • 650会员总数(位)
    • 189资源总数(个)
    • 3本周发布(个)
    • 0 今日发布(个)
    • 224稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情