Python基础(9)-流程控制

9.1-条件判断:

python中是以缩进来控制代码的层级的,同一级代码需要保持一致,下一级代码要进行缩进。

if .... else .... 判断就是如果怎样否则怎样。

条件本质上即是True(真)或假(False)。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
# 条件为真 输出 "123"
if True:
    print("123")
else:
    print("456")
    
print("-----" * 8)
 
# 条件为假 输出 "456"
if False:
    print("123")
else:
    print("456")

运行结果:

用户登录验证案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
user = input("请输入用户名:")
pwd = input("请输入密码:")

#如果 user等于root 并且 pwd等于root123 输出 "欢迎登录"
if user == "root" and pwd == "root123":
    print("欢迎登陆!")

#否则 输出 "用户名或密码错误"
else:
    print("用户名或密码错误!")

运行结果:

9.2-多条件判断:

#首先判断 条件1 为真 对应语句块内容将会被执行 如果 条件1为假 对应语句块(代码块)内容不会被执行
if 条件1:
    print("1")
 
#如果 条件1 为假 将判断 条件2 为真执行 为假 继续往下执行
elif 条件2:
    print("2")
 
#如果 条件2 为假 将判断 条件3 为真执行 为假 继续往下执行
elif 条件3:
    print("3")

#如上条件都为假时 则执行 else对应的 代码块
else:
    print("4")

根据用户输入的内容输出其成绩案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
user = input("请输入考生姓名:")

#如果 user等于 a 输出 "99分"
if user == "a":
    print("99分") 
    
#如果 if 条件为假 并且 user 等于 "b" 输出 "76分"
elif user == "b":
    print("76分")

#如果上述条件为假 并且 user 等于 "c" 输出 "32分"
elif user == "c":
    print("32分")

#否则 输出 "姓名输入错误,不存在该考生成绩!"
else:
    print("姓名输入错误,不存在该考生成绩!")

运行结果:

9.3-while循环:

while循环只要条件满足就会一直循环执行,直到条件不满足(为假False)时退出循环,并执行循环体后面的语句。

通过while循环可以让你不断地循环执行一段代码,若条件永远为真(True)则陷入死循环。

死循环案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
#条件永远为真 将陷入死循环
while True:
    print("1")
 
#while循环陷入死循环,不会执行循环体后面的语句
print("123456")

运行结果:

解决死循环:

#!/usr/bin/env python 
# -*- coding:utf-8 -*- 
name = True
 
# 条件为真 执行while中的代码块
while name:
    print("1")
 
#重新赋值
    name = False

#while循环 条件不满足 为False时 执行循环体后面的语句
print("123456")

在内存中的表示:

运行结果:

无限循环输出1、2、3、4、5、6、7 ............ 案例:

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
name = 1
while True:
    print(name)

#变量name的值 加 1 并赋值给 变量name
    name = name + 1

运行结果:

用while循环输出1 2 3 4 5 6 7 8 9 10案例:

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
name = 1
pwd = True
while pwd:
    print(name)
 
#变量name的值为10(为True)时 对应的代码块内容将被执行
    if name == 10:
        pwd = False
    name = name + 1
print("end")

运行结果:

break关键字:

break关键字是立即跳出当前循环,在其后面的循环代码不会被执行。

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
name = 1
pwd = True
while pwd:
    print(name)
 
#变量name的值为10(为True)时 对应的代码块内容将被执行
    if name == 10:

#跳出整个循环 其后面的循环代码将不执行
           break
    name = name + 1

#跳出整个循环后 直接往下执行
print("end")

运行结果:

continue关键字:

continue关键字是用于跳出本次循环,继续下一次循环。

如果遇到continue关键字,会终止本次循环,continue后面剩余的语句将会被忽略,回到循环顶端,继续下一次循环。

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
import time
while True:
    print("1")
    time.sleep(0.2)

#跳出本次循环 后面的语句将被忽略 回到循环顶端进行下一次循环
    continue
    print("2")

运行结果:

else子句:

在python中,可以在while和for循环中使用else子句,它只是在循环结束之后才会被执行,如果同时使用了break语句那么else子句块会被跳过。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
start = 0
while start < 3:
    name = int(input("请输入数字进行猜解:"))
    if name == 7:
        print("猜解正确")
        break
    elif name > 7:
        print("数字过大,请猜小一些")
    else:
        print("数字过小,请猜大一些")
    start += 1

#条件不成立,执行下列代码,只有使用break语句跳出,下列代码才不会执行
else:
    print("猜解次数过多")

运行结果:

练习题:

输入除了7以外的所有1~10以内的正整数案例:

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
start = 1
while True:

#判断 条件 是否为真 为真 执行对应代码块内容 否则忽略
    if start == 7:
        start += 1
        
#跳出本次循环 其后面的循环代码将被忽略 回到循环顶端进行下一次循环
        continue
    print(start)


#变量start的值为10(为True)时,对应的代码块内容将被执行
    if start == 10:

#跳出整个循环 其后面的循环代码将不执行
        break
    start += 1

运行结果:

求1-100的所有数的和案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
sum = 0
start = 1
while True:
    sum += start
 
# 判断条件为 True 时 执行对应代码块内容 否则 忽略
    if start == 100:
        print(sum)
        break
    start += 1

运行结果:

输出1~100内的所有奇数案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#1-首先循环输出1-100
#2-判断是奇数还是偶数,只显示奇数
  
start = 1
 
#判断条件是否为 True 为True 执行 否则忽略
while start < 101:

#变量than 等于 start % 2 的余数
      than = start % 2
 
#判断 条件是否为 True 为 True 执行对应代码块内容 否则忽略
#余数等于0即偶数,为1即奇数
      if than == 1:
        print(start)
      else:
 
#pass语句表示什么都不执行,这个必须要写,如果不写从语法上就报错了
        pass
      start += 1

运行结果:

输出 1-100 内的所有偶数案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
start = 1
 
#判断条件是否为 True 为True 执行 否则忽略
while start < 101:

#变量than 等于 start % 2 的余数
    than = start % 2

#判断 条件是否为 True 为 True 执行对应代码块内容 否则忽略
#余数等于0即偶数,为1即奇数
    if than == 0:
        print(start)
    else:

#pass语句表示什么都不执行,这个必须要写,如果不写从语法上就报错了
        pass
    start += 1

运行结果:

求1-2+3-4+5 ... 99的所有数的和案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
#1-首先输出1-99所有数的和
#判断是奇数还是偶数 偶数- 奇数+
  
sum = 0
start = 1
while start < 100:
    than = start % 2

#如果 条件为True 执行
    if than == 1:
        sum = sum + start
        
#否则 执行
    else:
        sum = sum - start
    start += 1
print(sum)

运行结果:

用户登陆(三次机会重试)案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#循环有 3次 登录的机会
#循环里面等待用户输入账号及密码
#判断条件为真 则输出 "欢迎登录!" 否则 输出 "用户名或密码错误,请重新登录...." 并且减少一次循环机会

start = 0
while start < 3:

#等待用户输入用户名 和 密码
    user = input("请输入用户名:")
    pwd = input("请输入密码:")

#判断条件是否为真 为真输出 "欢迎登录!" 并 跳出 整个循环
    if user == "root" and pwd == "root123":
        print("欢迎登陆!")
        break

#否则 输出 "用户名或密码错误,请重新登录...." 并且循环次数减少一次
    else:
        print("用户名或密码错误,请重新登录....")
        start += 1
        continue

运行结果:

9.4-for循环:

for循环可以遍历任何序列里的每一个元素,如一个列表或者一个字符串。

range()函数和xrange()函数:

Python 2.7.2:

range()函数:

说明: range(start=None, stop=None, step=None) 获取指定范围的整数,它的工作方式类似于分片,会生成一个列表对象, start 表示从什么开始,默认从0开始, stop 表示结束,这个参数是必须输入的, step 表示步进值,默认为1。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#一个参数时 表示从 0 开始
print(range(5))
print(type(range(5)))

#两个参数时 第一个参数表示 起始值 第二参数表示 结束值
print(range(3,7))

#第三个参数为步进值(步进值默认为1)
print(range(0,10,3))

运行结果:

xrange()函数:

说明: xrange(start, stop[, step]),用法和 range() 函数相同,只不过所生成的不是一个数组,而是一个生成器,只有通过 for 循环迭代它时 xrange() 才会生成当前的元素,xrange() 函数比 range() 函数的性能要优化很多,因为不需要一上来就开辟一块很大的内存空间。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
print(xrange(10))

# xrange()虽然也是内置函数,但是它被定义成了Python里一种类型,这种类型就叫xrange
print(type(xrange(10)))
for i in xrange(10):
    print(i)

运行结果:

注:xrange() 只有在Python2.7中适用,Python3中已经没有了。

Python 3.5.1:

range()函数:

说明: range(start, stop[, step]) 创建一个新的 range 对象, range 类型是一个表示整数范围的类型,range 类型实际上是一个不可变的数字序列,和 Python2.7中的 xrange() 类似。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
r1 = range(10)
print(r1)
print(type(r1))
for i in r1:
    print(i)
    
# 由于range是一个不可变的序列类型,所以可以进行索引、切片等序列操作,但不能对其中的元素进行修改
# 索引
r2 = r1[3]
print("索引:",r2)

#切片
r3 = r1[1:6]
print("切片:",r3)
print(type(r3))
for i in r3:
    print(i)

运行结果:

从大到小进行取值:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
for i in range(10,0,-1):
    print(i)

print("____" * 8)

for i in range(10,0,-2):
    print(i)

运行结果:

Python2和Python3的区别:

Python3中只有一个 range() ,但这个 range() 等同于 Python2.7的 xrange()

range()在for循环中的作用

可以根据range()函数给定的次数重复循环。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
for i in range(3):
    user = int(input("请输入数字:"))
    if user == 7:
        print("猜正确了")
        break
    elif user > 7:
        print("猜大了")
    else:
        print("猜小了")
else:
    print("猜解次数过多")

运行结果:

练习题:

输出列表中所有元素的索引:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
li = [11,22,33,44]

# 取列表 li 的长度
ret = len(li)
for i in range(0,ret):
    print("索引:",i,"值:",li[i])

运行结果:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 注:本文的原文地址为 http://segmentfault.com/a/1190000000618286 许多 ...
    Michael_林阅读 70,115评论 3 89
  • (三)娘子关东的短暂幸福 我两岁多的夏天,在山西工作的父亲决定要我们过去,于是我们跨过娘子关与父亲团聚,父母结束了...
    柳上听黄鹂阅读 216评论 0 0
  • 密密麻麻的夜,像密密麻麻的压力将我包围,张牙舞爪的将我吞噬,远处的高楼,冷漠的睁一只眼闭一只眼
    悠然绘梦阅读 180评论 0 0
  • 致谢:感谢@苏时@陈岚@封随意@冷风过境_007@秋萧萧之平儿@007践行者娇儿等诸位朋友的反馈意见,我已经努力做...
    月牙年轮阅读 403评论 8 4