Python基础(9)-流程控制

作者: 皓月的简书 | 来源:发表于2017-02-19 21:32 被阅读94次

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])

运行结果:

相关文章

网友评论

    本文标题:Python基础(9)-流程控制

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