美文网首页Python3.5 笔记
Python3.5笔记——第6章 条件、循环和其他语句

Python3.5笔记——第6章 条件、循环和其他语句

作者: 行者无疆_1024 | 来源:发表于2018-09-06 14:12 被阅读0次

    Python3.5笔记

    第六章 条件、循环和其他语句

    import语句的使用

    格式1:直接导入

    import modelname
    

    示例:

    import math
    r=5
    print(math.pi)
    print("半径是5的圆的面积是:%.2f"%(math.pi*r**2))
    

    输出:

    3.141592653589793
    半径是5的圆的面积是:78.54
    

    格式2:从modelA导入modelB

    from modelname import sub_modelname
    
    #另一种导入包的方式
    from math import pi
    r=5
    print(pi)#这种导入方式,可以直接使用sub_modelname,而不必使用modelname
    print("半径是5的圆的面积是:%.2f"%(pi*r**2))
    

    工作原理

    当我们使用import语句时,Python解释器如何找到对应的文件?

    这涉及Python的搜索路径,搜索路径由一系列目录名组成,Python解释器会依次从这些目录中寻找引入的模块。

    看起来很像环境变量,事实上可以通过定义环境变量的方式定义搜索路径,搜索路径是在Python编译或安装时确定的,

    被存储在sys的path变量中。查看搜索路径的方式如下:

    import sys
    print(sys.path)
    

    输出:

    ['D:\\pyspace\\hellopython', 'D:\\pyspace\\hellopython', 'D:\\Program Files\\Python\\python35.zip', 'D:\\Program Files\\Python\\DLLs', 'D:\\Program Files\\Python\\lib', 'D:\\Program Files\\Python', 'D:\\Program Files\\Python\\lib\\site-packages', 'D:\\Program Files\\JetBrains\\PyCharm 2018.1.4\\helpers\\pycharm_matplotlib_backend']
    

    可以通过修改path变量改变搜索路径的位置。

    导入多个模块

    导入多个模块时,只需要将导入的多个模块中间用逗号,分隔开就可以了。如:

    from math import pi,sin
    

    导入全部

    from math import *
    

    起别名

    可以对导入导入的模块起别名,直接在模块名后加as 别名即可。如:

    from math import pi as p
    print(p)
    

    输出

    3.141592653589793
    

    使用逗号输出

    可以使用逗号输出多个表达式,所以不使用格式化的方式也可以同时输出文本和变量值。如:

    print("我是小智",",我来自未来")
    name = "我是小智"
    introduce = ",我是一名工程师"
    comefrome = ",我来自未来"
    print(name,introduce,comefrome)
    

    输出:

    我是小智 ,我来自未来
    我是小智 ,我是一名工程师 ,我来自未来
    

    花式赋值

    序列解包

    在Python中,交换所作的事情叫做序列解包,或可迭代解包。即将多个值的序列解开,然后放到变量的序列中。

    通过序列解包,可以同时对多个变量赋值。如:

    x,y,z = 1,2,3
    print("x=",x)
    print("y=",y)
    print("z=",z)
    print(x,y,z)
    
    a,b,c = "a","b","c"
    print(a,b,c)
    
    student = {'name':"小明",'age':23}
    #Python 字典 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
    #如果字典已经为空,却调用了此方法,就报出KeyError异常。
    #返回一个键值对(key,value)形式。
    key,value = student.popitem()
    print(key)
    print(value)
    print(student)
    

    输出:

    x= 1
    y= 2
    z= 3
    1 2 3
    
    a b c
    
    name
    小明
    {'age': 23}
    

    需要注意的是,解包序列中的元素数量必须和放置在赋值符号"="左边的数量完全一致,否则Python会在赋值时引发异常。如:

    x,y,z = 1,2
    print(x,y,z)
    

    输出

    ValueError: not enough values to unpack (expected 3, got 2)
    

    链式赋值

    可以通过多个等式为多个变量赋同一个值,这种方法叫做链式赋值。

    链式赋值是将同一个值赋给多个变量,但是要注意的是,当其中一个变量的值发生改变后,另外变量的值并不会自动随之改变,而是仍然保持原来的值不变。如:

    x=y=z=123
    print(x,y,z)
    y=456
    print(x,y,z)
    

    输出

    123 123 123
    123 456 123
    

    增量赋值

    使用赋值运算符时,没有将表达式写成类似x=x+1的形式,而是将表达式放置在赋值运算符(=)的左边,如:将x=x+1写成

    x+=1,这种写法在Python中称之为增量赋值。即先对变量进行"="左边的运算,然后再将运算完的结果赋给变量。如:

    x=0
    x+=1
    print(x)
    x*=10
    print(x)
    

    输出

    1
    10
    

    增量赋值不仅使用于数字,同样适用于字符串,如:

    str='hello'
    str+=' world'
    print(str)
    str*=2
    print(str)
    

    输出

    hello world
    hello worldhello world
    

    语句块

    在Python中,冒号(:)用来标识语句块的开始,语句块中每一个语句都需要缩进(缩进量相同)。当退回到和已闭合的块一样的缩进量时,表示当前语句块已经结束了。如:

    a=3
    if a==3:
        print('a==3')
        print('这是一个语句块')
    a=4#这时语句块已经结束了
    

    输出:

    a==3
    这是一个语句块
    

    Python中的布尔值

    在Python中,标准的布尔值有:True,False。下面的值做为布尔表达式时,会被看作假。

    False None () "" 0 [] {}
    

    在Python中,除了标准值False和None、所有类型的数字0(包括浮点型,长整形和其他类型)、空序列(如:空字符串、空元组和空列表)以及空字典都为假。其他的值都为真,包括原生的布尔值True。

    标准值False=0,True=1

    print(True == 0)
    print(True == 1)
    print(False == 0)
    print(False + True + 2)
    print(False)
    print(True)
    

    输出:

    False
    True
    True
    3
    False
    True
    

    bool()函数用来转换表达式为布尔值,如:

    print(bool('abc'))
    print(bool(0))
    

    输出:

    True
    False
    

    IF ELSE ELIF 语句的写法

    在Python中,if语句后面不需要跟括号(),只需要跟空格,然后加条件表达式即可。else 语句不是独立语句,只能做为if语句的一部分。elif是else if的简写,在Python中,使用elif代替其他语句的else if。如:

    #! /usr/bin/python3 #建议加上这一句,否则代码移植到linux时,会找不到解释器
    # -*- coding:UTF-8 -*- #建议加上这一句,否则有中文时容易出现乱码
    #greeting = 'hello'
    greeting = 'hello1'
    #greeting = 'hello2'
    if greeting == 'hello':
        print('hello的长度是:%d'%len(greeting))
    elif greeting == 'hello1':
        print('greeting变量的值是:%s'%greeting)
    else:
        print('字符串不等于hello')
    

    输出:

    #hello的长度是:5
    greeting变量的值是:hello1
    #字符串不等于hello
    

    同一运算符 IS

    IS运算符用来判断两个对象是否等同(是否为同一个对象),使用==运算符用来判断两个对象是否相等。如:

    x=y=(1,2,3)
    z=(1,2,3)
    print(x is y)
    print(x is z)
    

    输出:

    True
    False
    

    比较字符串和序列

    字符串可以按照字母排序顺序进行比较,也可以对列表进行比较操作,也可以对嵌套列表进行比较操作。如:

    print([1,2] < [2,1])
    print([1,2] == [1,2])
    

    输出:

    True
    True
    

    assert 断言

    在Python中,assert语句的格式如下:

    if not condition:
        crash program
    

    为什么需要这样的代码呢?

    在没有完善一个程序之前,你不知道程序会在哪里出错,与其在运行时崩溃,不如在遇到错误时崩溃。

    使用assert,要注意以下几点:

    1、assert断言用来声明某个条件是真的。

    2、如果你非常确信,你使用的列表中至少有一个元素,想要检验这一点,并在它非真时引发一个错误,那么assert语句是应用在这种情形下的理想语句。

    3、当assert语句失败时,会引发一个AssertionError。

    x=3
    #assert x<0,'x is not zero not negative'
    assert x%2==0,'x不是偶数'
    

    输出

        assert x%2==0,'x不是偶数'
    AssertionError: x不是偶数
    

    几种循环的写法

    while循环

    while语句用于循环执行程序,以处理需要重复处理的任务。执行的流程为:当while条件为True时,执行循环体,直到while条件为False时,退出循环,基本语法形式如下:

    while 判断条件:
        执行语句
        迭代器
    

    示例:

    x=0
    while x<5:
        print('x=',x)
        x+=1
    

    输出:

    x= 0
    x= 1
    x= 2
    x= 3
    x= 4
    

    for循环

    for循环可以遍历任何序列的项目,如一个列表或字符串。for循环的语法格式如下:

    for iterator_var in sequence
    statements
    

    sequence是任意序列,iterator_var是序列中要遍历的元素,statements是待执行的语句块。

    print('---------循环字符串-------------')
    for letter in 'goods':
        print('当前字母是:',letter)
    print('---------循环数字序列-------------')
    numbers = [1,2,3,4,5]
    for number in numbers:
        print('当前数字是:%d'%number)
    print('---------循环字典-------------')
    dictionary = {'name':'小明','age':23,'性别':'男','爱好':'女'}
    for dict in dictionary:
        print('当前字典的值是:%s=%s'%(dict,dictionary[dict]))
    print('---------循环字典,使用序列解包-------------')
    for key,value in dictionary.items():
        print('%s:%s'%(key,value))    
    

    输出:

    ---------循环字符串-------------
    当前字母是: g
    当前字母是: o
    当前字母是: o
    当前字母是: d
    当前字母是: s
    ---------循环数字序列-------------
    当前数字是:1
    当前数字是:2
    当前数字是:3
    当前数字是:4
    当前数字是:5
    ---------循环字典-------------
    当前字典的值是:性别=男
    当前字典的值是:爱好=女
    当前字典的值是:age=23
    当前字典的值是:name=小明
    ---------循环字典,使用序列解包-------------
    性别:男
    age:23
    name:小明
    爱好:女
    

    迭代工具

    并行迭代

    在Python中,内建的zip函数用来进行并行迭代,可以把两个序列合并在一起,返回一个元素的列表。zip函数可以作用于任意数量的序列,并且可以应付不等长的序列,当序列用完时就停止,此时以段序列为准,当段序列执行结束,for循环就遍历结束。

    for num1,num2 in zip(range(3),range(100)):
        print('number=',num1)
    

    输出

    number= 0
    number= 1
    number= 2
    

    反转和排序迭代

    sorted()函数返回排序后的序列,reversed()函数返回反转后的序列

    print(sorted([5,3,7,1]))
    print(sorted('hello world!'))
    print(list(reversed('hello world')))
    print(''.join(reversed('hello world')))
    

    输出:

    [1, 3, 5, 7]
    [' ', '!', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
    ['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h']
    dlrow olleh
    

    break和continue

    break和continue同java,break用于跳出循环,执行循环体外的语句,continue用于跳出当前循环,继续执行剩余的循环体。

    循环中的else语句

    在while条件语句为false时,执行else语句

    在for条件语句为false时或结束后没有被break中段时,执行else语句。

    pass语句

    pass不做任何事情,只是占位语句。

    习题

    1 猜数字

    #猜数字的游戏,猜大了提示大了,猜小了提示小了,猜对了提示对了,并告知猜了几次
    import random
    random_num = random.randint(1,10)
    input_num = input('你猜我手里的1-10的数字是多少?')
    i=0
    while True:
        if not input_num.isdigit():
            print('输入的不是数字')
            break
        input_num_int = int(input_num)
        i+=1
        if input_num_int > random_num:
            input_num = input('你猜大了,再给你一次机会')
        elif input_num_int < random_num:
            input_num = input('你猜小了,再给你一次机会')
        else:
            print('恭喜你,猜对了!你一共猜了%d次'%i)
            break
    

    2是不是阿姆斯特朗数

    #如果一个n位正整数等于各位数字n次方的和,就称该数为阿姆斯特朗数。例如:1^3+5^3+3^3=153
    #1000以内的阿姆斯特朗数还有:1、2、3、4、5、6、7、8、9、153、370、371、407
    #写一个程序,判断输入的数字是否是阿姆斯特朗数
    input_num = input('请输入一个阿姆斯特朗数')
    comput_result = 0
    length = len(input_num)
    if input_num.isdigit():
        for letter in input_num:
            comput_result += int(letter)**length
        if comput_result == int(input_num):
            print('你输入的数字',input_num,'各位相加的结果是',comput_result,',是阿姆斯特朗数')
        else:
            print('你输入的数字',input_num,'各位相加的结果是',comput_result,',不是阿姆斯特朗数')
    else:
        print('输入的不是数字!')
    

    相关文章

      网友评论

        本文标题:Python3.5笔记——第6章 条件、循环和其他语句

        本文链接:https://www.haomeiwen.com/subject/phlxgftx.html