IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python基础教程(第2版)第五章 条件、循环和其他语句 -> 正文阅读

[Python知识库]Python基础教程(第2版)第五章 条件、循环和其他语句

1.print和import

在Python 3.0中,print不再是语句而是函数(功能基本不变)

可以使用print打印多个表达式,用逗号分隔就行

print('Age'+':',42)	#Age: 42

print的参数并不能像我们预期的那样构成一个元组

对于很多应用程序来说,使用logging模块记日志比print语句更合适

import:导入功能

from math import *	#从给定模块导入所有功能
print(sqrt(4))  #2.0

可以在语句末尾增加一个as子句,在该子句后给出名字,为整个模块提供别名

import math as foobar1
print(foobar1.sqrt(9))  #3.0

还可以给函数取别名

from math import sqrt as foobar2
print(foobar2(169)) #13.0

2.赋值

2.1 序列解包

允许函数返回一个以上的值并打包成元组,然后通过一个赋值语句很容易进行访问

包序列中的元素数量必须和放置在赋值符号=左边的变量数量完全一致

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

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

还可以用它交换两个 (或更多个)变量

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

假设需要获取 (和删除)字典中任意的键值对,可以使用popitem方法,这个方法将键值对作为元组返回,然后这个元组就可以直接赋值到两个变量中

scoundrel={'name':'Robin','girlfriend':'Marion'}
key,value=scoundrel.popitem()
print(key+':',value)	#girlfriend: Marion

Python 3.0中有另外一个解包的特性:可以像在函数的参数列表中一样使用星号运算符(将所有其他参数放在一个变量中)

使用星号的变量可以放在第一个,此时它会包含一个列表

a,b,*rest=[1,2,3,4]
print(a,b,rest)  #1 2 [3, 4]

2.2 链式赋值

是将同一个值赋给多个变量的捷径

x=y=somefunction()
#等价于
y=somefunction()
x=y

2.3 增量赋值

增量赋值对其他数据类型也适用

value*=2
print(value)    #MarionMarion

3.语句块:缩排的乐趣

语句块是在条件为真时执行或执行多次的一组语句
冒号用来标识语句块的开始,块中的每一个语句都是缩进的(缩进量相同)
当回退到和己经闭合的块一样的缩进量时,就表示当前块已经结束了

4.条件和条件语句

Python中所有值都能被解释为真值

????????false、None、0、""、[]、{}会被解释器看作假,其它的一切会被解释为真

print(bool([])) #False

if、else和elif

# name=input("What is your name?")
name="Gumby"
if name.endswith('Gumby'):	#if语句
    if name.startswith('Mr.'):  #if语句中嵌套if语句
        print('Hello,Mr.Gumby')
    elif name.startswith('Mrs.'):	#elif语句:else if的简写,是有条件的else语句
        print('Hello,Mrs.Gumby')
    else:
        print('Hello,Gumby')    #Hello,Gumby
else:	#else语句
    print('hello, stranger')

用在条件中最基本的运算符就是比较运算符

#比较运算符
x=y=[1,2,3]
z=[1,2,3]
print("x==y:",x==y) #x==y: True
print("x==z:",x==z) #x==z: True
#同一性运算符(x和y是同一个对象)
print("x is y:",x is y) #x is y: True#
print("x is z:",x is z) #x is z: False
#成员资格运算符
# name=input('What is your name?')
name="Gumby"
if 's' in name:     
    print('You name contains the letter "s".')
else:
    print('Your name does not contains the letter "s".')    #Your name does not contains the letter "s".
#布尔运算符:使用and、or和not这三个运算符可以随意结合真值
# number=int(input('Enter a number between 1 and 10:') or 9)    #短路逻辑
number=9
if number <=10 and number >=1:
    print('Great!') #Great!
else:
    print('Wrong!')

断言assert:用于在程序中置入检查点,确保程序中的某个条件一定为真才能让程序正常工作

在检查函数参数的属性时使用,或者作为初期测试和调试过程中的辅助条件

age=10
assert 0<age<100
age=-1  #报错
assert 0<age<100,"The age must be realistic"    #条件后可以添加字符串用来解释断言

5.循环

5.1 while循环

while语句非常灵活,它可以用来在任何条件为真的情况下重复执行一个代码块

x=1
while x<=5:
    print(x)
    x+=1

5.2 for循环

如果能使用for循环就尽量不使用while循环

for循环可以在循环中使用序列解包

d={'x':1,'y':2,'z':3}
for key,value in d.items(): # d.items:将键-值对作为元组返回
    print(key,'corresponds to',value)   #x corresponds to 1
#                                       y corresponds to 2
#                                       z corresponds to 3

5.3 一些迭代工具

并行迭代:程序可以同时迭代两个序列

names=['anne','beth','george','damon']
ages=[12,45,32,102]
for i in range(len(names)):
    print(names[i],'is',ages[i],'years old.')
# anne is 12 years old.
# beth is 45 years old.
# george is 32 years old.
# damon is 102 years old.

????????内建的zip函数可以把多个序列压缩在一起,用来实现并行迭代

print(zip(names,ages)) #<zip object at 0x10f955048>
for i in zip(names,ages):
    print(names,'is',ages,'years old.')   #
# ['anne', 'beth', 'george', 'damon'] is [12, 45, 32, 102] years old.
# ['anne', 'beth', 'george', 'damon'] is [12, 45, 32, 102] years old.
# ['anne', 'beth', 'george', 'damon'] is [12, 45, 32, 102] years old.
# ['anne', 'beth', 'george', 'damon'] is [12, 45, 32, 102] years old.

编号迭代:有些时候想要迭代序列中的对象,同时还要获取当前对象的索引

????????可以使用内建的enumerate函数:在提供索引的地方迭代索引值对

for index,name in enumerate(names): 
    if 'damon' in name:
        names[index]='[censored]'
for name,age in zip(names,ages):
    print(name,'is',age,'years old')
# anne is 12 years old
# beth is 45 years old
# george is 32 years old
# [censored] is 102 years old

排序迭代(返回的是列表):作用于任何序列或可迭代对象上,不是原地修改对象,而是返回排序后的版本

print(sorted('Hello,world!'))   #['!', ',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

翻转迭代(返回的是可迭代对象):作用于任何序列或可迭代对象上,不是原地修改对象,而是返回翻转后的版本

print(list(reversed('Hello,world!')))   #['!', 'd', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'H']

5.4 跳出循环

break:结束或跳出循环

from math import sqrt
for n in range(99,0,-1):  #range(上限,下限,步长)
    root=sqrt(n)
    if root==int(root):
        print(n)    #81
        break 

continue:当前迭代结束,“跳”到下一轮循环的开始

while True/break:第一部分负责初始化,第二部分在循环条件为真的情况下使用第一部分初始化好的数据

while True:
    x+=1    
    if(x>3):break   #条件满足时结束
    print(names[x])
# anne
# beth
# george
# [censored]

循环中的else语句:仅在没有调用循环内的break时执行

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!")    #didn't find it!

6.列表推导式——轻量级循环

列表推导式[]:利用其它列表创建新列表(类似于数学术语中的集合推导式)

print([x*x for x in range(10) if x%3==0])   #[0, 9, 36, 81]

7.pass、del和exec

pass:可以在代码中做占位符使用

? ? ? ? 当程序需要一个if语句并进行测试,但是缺少其中一个语句块的代码时

name='Enid'
if name=='Ralph Auldus Melish':
    print('Welcome!')
elif name=='Enid':
    pass   #表示还没完,如果不写这个,会报错,空代码块是非法的。
elif name=='Bill Gates':
    print('Access Denied')

del:不仅会移除一个对象的引用,也会移除那个名字本身,但不会删除值

x=['Hello','world']
y=x
y[1]='python'
del x
print(y)    #['Hello', 'python']

exec:执行存储在字符串中的代码(会有严重的潜在安全漏洞)

????????最有用的地方在于可以动态地创建代码字符串

exec("print( 'Hello world!')")  #Hello world!

eval:会计算以字符串形式书写的Python表达式,并且返回结果值

print("eval:",eval("6+18*2"))   #eval: 42

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-01 20:33:48  更:2022-02-01 20:33:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:24:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码