文档章节

python入门(七) -- 流程控制

兴趣使然的程序员
 兴趣使然的程序员
发布于 2017/05/09 16:30
字数 1232
阅读 12
收藏 1

和其他编程语言一样,python也提供了用于流程控制的语句,比如while、if等。

1、if 语句

x = int(input("请输入一个整数:"))
# if语句,不用括号(),不用大括号{}
if x < 0:
    x = 0
    print("负数")
elif x == 0:
    print("零")
else:
    print("正数")

需要注意的是:

  1. python中以“缩进”代表代码块
  2. elif相当于其他语言中的else if
  3. python中没有switch语句
  4. 在python中,和其他语言不通,所有不为零的数据都判定为True,比如:
if "7":
    print("7 also means true!")

2、for 语句

# 如果序列是安全的(不可变)
words = ['cat', 'dog', 'lion']
for w in words:
    print(w, 'length is:', len(w))

# 如果序列不安全(是可变的list),可以遍历"副本"
for w in words[:]:
    if len(w) < 4:
        words.insert(0, w)
print(words)

# 对Dictionary类型进行循环时,默认循环的是dict.keys()
# 相当于for k in user.keys()
for k in user:
    print(k)
for v in user.values():
    print(v)

需要注意的是:

  1. python中没有类似java中的for(int i = 0;i<list.size();i = i+2)的,可以自定义步长的循环
  2. 在python的for循环中,循环变量在循环结束后仍然存在
# for循环中的循环变量在循环结束的时候仍然存在
for x in range(10):
    x += 1
print(x)

3、While 语句

n = 100
num_sum = 0
counter = 1
while counter <= n:
    num_sum += counter
    counter += 1
print("1到%d之和为:%d" % (n, num_sum))

需要注意的是:

  1. python中没有do...while语句

4、range() 函数

如果需要一个数值序列,python的内置函数range()可以方便的生成一个等差数列:

# range(5)生成从0到4的序列[0,5[
for i in range(5):
    # 打印出0 1 2 3 4
    print(i, end=' ')
# 打印出range(0,5)
print(range(5))

# range(5,10)生成从5到9的序列[5,10[
for i in range(5, 10):
    print(i, end=' ')
print()

# 生成从0到9,步长为3的序列
for i in range(0, 10, 3):
    # 打印出0 3 6 9
    print(i, end=' ')

range()函数的可以用于获取迭代列表的索引(替代其他语言中的for i循环):

words = ['cat', 'dog', 'lion']
for i in range(len(words)):
    print("%s的索引是%d" % (words[i], i))

5、break、continue和循环中的else语句

break、continue的作用和Java中相同,break跳出最近的循环,continue进入下一次迭代。

和Java中不同的是,python中的循环语句可以有一个else语句:

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, " equals ", x, "*", n//x)
            break
    else:
        # 当循环条件 x in range(2,n)不满足时,会进行else中的代码
        # 注意如果因为break终止循环,else中的代码不会被调用
        print(n, 'is a prime number')

需要注意的是:

  • else代码在循环正常结束时调用
  • 如果因为break终止循环,else中的代码不会被调用

6、pass语句

pass语句为python独有,代表“什么也不做”,用于必须有什么语句,但是什么也不做的场合。

比如:

# 由于while、for、if等语句之后不能什么都没有,不像java中可以写while(true){},所以要写pass
while True:
    # 等待使用Ctrl + C终止程序
    pass

7、循环技巧

除了使用4中提到的range(len(list))以获取索引进行循环以外,有以下循环技巧:

  • 使用items()方法同时获取字典的key和value
# 使用items()方法(相当于Java中的Map.Entry),循环时同时获取key和value
user = {"name": "pierre", "password": "123456"}
for k, v in user.items():
    print("key: %s, value: %s" % (k, v))
  • 使用enumerate()方法同时获取序列的index和value 
# 使用enumerate()方法,在循环序列时同时获取索引和值
words = ['cat', 'dog', 'lion']
for index, v in enumerate(words):
    print("index: %d, value: %s" % (index, v))
  • 使用zip()方法同时循环两个序列 
# 使用zip()同时循环两个序列,项数以少的序列为准,比如下面的序列中的'lion'会被忽略
words1 = ['cat', 'dog', 'lion']
words2 = ['apple', 'pear']
for w1, w2 in zip(words1, words2):
    print("%s eat %s" % (w1, w2))
# zip()实际上把两个序列的每一项拿出来放到一个元组里
# 同时获取索引:
for index, words in enumerate(zip(words1, words2)):
    print("index:", index, "word1:", words[0], "word2:", words[1])
  • 使用reversed()方法逆向循环序列
# 逆向循环序列
words = ['cat', 'dog', 'lion']
for w in reversed(words):
    print(w)
  • 使用sorted()方法对排序后的序列循环
# 获取排序后的序列的副本
# 注意sorted不会改变原序列
words = ['cat', 'dog', 'lion']
for w in sorted(words):
    print(w)

8、空字符串、0、1

在python中,0和False、1和True可以互转,用在条件判断式中同样可以通用:

if 1:
    print(1 == True)
if not 0:
    print(0 == False)

而空字符串''则比较特别:

  • 在条件判断式中相当于False
  • '' == Flase返回False,空字符串和False不能互转
# 在python中空字符串在条件判断中相当于False
if not '':
    print('空字符相当于False')
    # '' == False返回Flase
    print('' == False)

 

© 著作权归作者所有

共有 人打赏支持
兴趣使然的程序员
粉丝 23
博文 112
码字总数 87412
作品 0
深圳
程序员
私信 提问
Python开发(基础):初识Python

Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quo...

wbb827
2018/07/03
0
0
荐书丨确认过眼神,这份Python书单一定是你的菜

点击上方“程序人生”,选择“置顶公众号” 第一时间关注程序猿(媛)身边的故事 Python 是军刀型的开源工具,被广泛应用于Web 开发、爬虫、数据清洗、自然语言处理、机器学习和人工智能等方...

csdnsevenn
2018/05/05
0
0
分享我自己写的一套Python爬虫学习经验

最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多。学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴...

崔庆才
2015/02/23
3.7K
25
什么样的人学Python比别人快?Python的学习大纲有哪些?

什么样的人学Python比别人快? 为什么会是这些人?前两类大家应该都没什么意见,为什么最后两类会学得快?这两类说白了就一个关键词:转行!既然决定转行,有太多需要学习的东西,太多不适应...

帅帅程序员
2018/04/28
0
0
10 分钟快速入门 Python3

Python 是由吉多·范罗苏姆(Guido Van Rossum)在 90 年代早期设计。 它是如今最常用的编程语言之一。它的语法简洁且优美,几乎就是可执行的伪代码。 注意:这篇教程是基于 Python 3 写的。源...

大数据之路
2016/03/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
2
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
10
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部