python条件和循环的使用方法
admin
2023-07-31 02:02:15
0

前面已经介绍过几种基本语句(print,import,赋值语句),下面我们来介绍条件语句,循环语句。
一. print和import的更多信息
1.1 使用逗号输出
A.打印多个表达式,用逗号隔开,会在每个参数之间插入一个空格符:

复制代码 代码如下:
>>> print \’age:\’,42
age: 42

B.同时输出文本和变量值,却又不希望使用字符串格式化:
复制代码 代码如下:
>>> name = \’Peter\’
>>> greeting = \’Hello\’
>>> print greeting,\’,\’,name
Hello , Peter

上面的例子中会在逗号前加入一个空格,我们可以这样优化:
复制代码 代码如下:
>>> print greeting + \’,\’,name
Hello, Peter

注意,如果在结尾处加上逗号,那么接下来的语句会与前一句在同一行打印:
复制代码 代码如下:
>>> print \’Hello,\’,
    print \’world\’
Hello,world
 
1.2 把某件事作为另一件事导入
从模块导入函数时,可以使用:
整个模块导入:import somemodule
导入其中一个函数:from somemodule import somefunction
导入其中几个函数:from somemodule import somefunction,anotherfunction,yetanotherfunction
导入全部函数:from somemodule import *
如果某2个模块都有相同名字的函数,比如叫open函数,那么可以这样给函数或者模块提供别名:
复制代码 代码如下:
>>> import math
>>> import math as foobar
>>> foobar.sqrt(4)
2.0
>>> from math import sqrt as foobar2
>>> foobar2(4)
2.0

二. 赋值魔法
就算是不起眼的赋值语句也有一些特殊的技巧。
2.1 序列解包
序列解包就是将多个值的序列解开,然后放到变量的序列中。

>>> #\’多个赋值操作同时进行\’
>>> x,y,z = 1,2,3
>>> print x,y,z
1 2 3
>>> #\’交换2个或多个变量\’
>>> x,y = y,x
>>> print x,y
2 1
>>> #\’当函数或方法返回元组时\’
>>> s = {\’a\’:1,\’b\’:2,\’c\’:3}
>>> key,value =  s.popitem()
>>> print key,value
a 1
最后一个例子可以看出,它允许函数返回一个以上的值并打包成元组,然后通过一个复制语句很容易进行访问。
注意:解包的序列中元素数量必须和放置在赋值符合=左边的变量数量完全一致,否则会引发异常。

2.2 链式赋值
链式赋值是将同一个值赋给多个变量的捷径。
>>> x = y = \’sss\’

2.3 增量赋值
增量赋值可以让代码更紧凑简练。
对于+,-,*,/,%等标准运算符都适用:

>>> x = 2
>>> x += 1
>>> x *= 2
>>> x
6
>>> #对其他数据类型也适用
>>> f = \’foo\’
>>> f += \’bar\’
>>> f
\’foobar\’

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

四. 条件和条件语句
4.1 这就是布尔变量的作用
下面的值在作为布尔表达式的时候,会被解释器看作假(False):
False None 0 “” () [] {}
其他的一切值都被解释为真,包括特殊值True。

4.2 条件执行和if语句
如果条件判断为真,那么后面的语句块就会被执行,也可以加入elif进行多个条件检查。作为if的一部分,还有else子句。
当然,我们可以在if语句里面嵌套使用if语句。

复制代码 代码如下:
num = input (\’enter a number? \’)
if num > 0:
    if num > 50:
        print\”num > 50\”
    elif num > 10:
        print \”num > 10\”
    else:
        print \”num > 0\”
else:
    print \”num <= 0\”

4.3 更复杂的条件
下面我们回到条件本身,因为它们才是条件执行真正有趣的部分。
4.3.1. 比较运算符
复制代码 代码如下:
 x == y;     x < y;     x > y;      x >= y;      x <= y;
 x != y;      x is y;     x is not y;   x in y;     x not in y;

4.3.2.  is:同一性运算符
复制代码 代码如下:
>>> x = y = [1,2,3]
>>> z = [1,2,3]
>>> x is y
True
>>> x is z
False
>>> x == z
True

由此看出,使用==运算符来判定两个对象是否相等,使用is判定两者是否同一个对象。

4.3.3. in:成员资格运算符
复制代码 代码如下:
name = raw_input(\”what is your name?\”)
if \’s\’ in name:
    print \’your name contains the letter s\’
else:
    print \’your name does not contain the letter s\’
 
4.3.4.字符串和序列比较
字符串可以按照字符顺序排列进行比较。
>>> \’alpha\’ < \’beta\’
True
字符是按照本身的顺序值排列的,一个字母的顺序值可以用ord函数查到。
其他的序列也可以用同样的方式进行比较,不过比较的是元素的其他类型。
复制代码 代码如下:
>>> [1,2] > [2,1]
False
>>> [1,[2,3]] < [1,[3,2]]
True
 
4.3.5. 布尔运算符
and运算符是所谓的布尔运算符,它连接2个布尔值,并且在两者都为真时返回真,否则返回假。与它同类的还有2个运算符,or和not。
复制代码 代码如下:
number = raw_input(\”enter a number?\”)
if number <=10 and number >= 1:
    print \”great!\”

4.3.6. 断言
if语句有个近亲,工作方式类似于:
复制代码 代码如下:
if not condition:
      crash program

这是因为与其让程序在晚些时候崩溃,不如在错误条件出现时直接让它崩溃。语句中使用的关键字是assert。它确保程序中的某个条件为真时才能让程序正常工作。
复制代码 代码如下:
>>> age = -1
>>> assert 0 < age < 100
Traceback (most recent call last):
  File \”\”, line 1, in
    assert 0 < age < 100
AssertionError
 
 五. 循环
 5.1 while循环
while语句非常灵活,可以在任何条件为真的情况下重复执行一个代码块。
复制代码 代码如下:
name = \’\’
while not name:
    name = raw_input(\’please enter your name: \’)
print \’hello,%s!\’ % name

 5.2 for循环
当要为一个集合(序列和其他可迭代对象)的每个元素都执行一个代码块时,我们就需要for循环了。
5.2.1.循环遍历字典元素
一个简单的for语句就能循环字典的所有键,就像处理序列一样:
d = {\’x\’:1,\’y\’:2,\’z\’:3}
for key in d:
    print key,\’corrensponds to \’,d[key]
5.2.2.一些迭代工具
A.并行迭代
复制代码 代码如下:
names = [\’a\’,\’b\’,\’c\’,\’d\’]
ages = [12,23,45,32]
#循环索引迭代
for i in range(len(names)):
    print names[i],\’is\’,ages[i],\’years old.\’
#内建zip函数迭代
for name,age in zip(names,ages):
    print name,\’is\’,age,\’years old.\’

B.编号迭代
有时候迭代序列中的对象时,同时要获取当前对象的索引。
复制代码 代码如下:
#index计数
index = 0
for string in strings:
    if \’xxx\’ in string:
        string[index] = \’sss\’
    index += 1

#内建enumerate函数迭代
for index,string in strings:
    if \’xxx\’ in string:
        string[index] = \’sss\’

C.翻转和排序迭代
函数reversed和sorted,作用于任何序列或可迭代对象上,不是原地修改对象,而是返回翻转或排序后的版本:
复制代码 代码如下:
>>> sorted([2,6,3,7])
[2, 3, 6, 7]
>>> list(reversed(\’hello\’))
[\’o\’, \’l\’, \’l\’, \’e\’, \’h\’]

 5.3 跳出循环
一般情况下循环会一直执行到条件为假,或者到序列元素用完时。但是有时候需要提前中断一个循环。
5.3.1.break
结束循环可以使用break语句。
复制代码 代码如下:
for i in range(0,10):
    if i == 5:
        print \’quit\’
        break
    print i

5.3.2.continue
continue语句会让当前迭代结束,跳到下一轮循环的开始。
复制代码 代码如下:
for i in range(0,10):
    if i % 2 == 0:
        continue
    print i

5.3.3.while True/break
比如当用户在提示符下输入单词时做一些事情,并在用户不输入单词后结束循环。
复制代码 代码如下:
while True:
    word = raw_input(\’enter a word: \’)
    if not word:
        break
    print \’The word is \’+ word

六. 列表推导式–轻量级循环
列表推导式是利用其他列表创建新列表的一种方法,工作方式类似于for循环:
复制代码 代码如下:
>>> [x**2 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, 0), (2, 1), (2, 2)
 
 七. 三人行
作为最后的结束,我们来看3个语句:pass,del和exec
pass:什么都不做,用来在代码中做占位符使用,方便调试代码。
复制代码 代码如下:
if a == \’a\’:
    print \’yes\’
elif a == \’b\’:
    pass
else:
    print \’no\’

del:删除不再使用的对象,也就是用作垃圾收集。
复制代码 代码如下:
>>> x = [1,2]
>>> y = x
>>> del x
>>> x
Traceback (most recent call last):
  File \”\”, line 1, in
    x
NameError: name \’x\’ is not defined
>>> y
[1, 2]
 
del删除的只是名称,而不是列表本身,所以上面的例子中,删除x不会影响到y。
exec:动态创造python代码,然后将其作为语句执行或作为表达式计算。但是这样做是会有很严重的潜在安全漏洞,如果程序将用户提供的一段内容中的一部分字符串作为代码执行,程序可能会失去对代码执行的控制。
复制代码 代码如下:
>>> exec \”print \’hello,world\’\”
hello,world

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...