第三篇 条件控制和循环

1.条件控制

  if语句的形式一般为:

1 if 条件1:
2   语句1
3 elif 条件2:
4   语句2
5 else:
6   语句3

  注意:代码的缩进为一个tab键,或者4个空格,建议使用空格。

  实例:

age = int(input("请输入您的年龄:"))
if age >= 18:
    print("已满18岁,可以入内")
else:
    print("未满18岁,禁止入内")

  注意:

  • 每个条件后面要使用冒号,以表示接下来是满足条件后要执行的代码块。
  • 使用缩进来划分语句块,相同的缩进为一个代码块。
  • if和else语句以及各自的缩进部分共同是一个完整的代码块。

  在第二篇中学习到的操作符,在if语句中经常使用的比较运算符,如下:

操作符 描述
> 大于
>= 大于等于
< 小于
<= 小于等于
== 相等
!= 不相等

  另外,在程序开发过程中,通常需要判断多个条件,多个条件满足时才能执行后续代码,这个时候需要用到逻辑运算符,逻辑运算符可以把多个条件按照逻辑进行连接,Python中的逻辑运算符包括:and、or、not三种。

1.1条件1 and 条件2:条件1和条件2同时成立时才返回True。

# 判断一个数是否同时被4和6整除的条件语句,并且打印对应的结果
num = int(input('请输入一个整数:'))
if num % 4 == 0 and num % 6 == 0:
    print("能够被4和6同时整除")

1.2条件1 or 条件2:条件1和条件2有一个成立就返回True。

# 写出判断一个数是否能够被3或者7整除,但是不能同时被3和7整除的条件语句,并打印结果
num = int(input("请输入一个数字:"))
if (num % 3 == 0 or num % 7 == 0) and (num % 21 != 0):
    print("能够被3或者7整除,但是不能同时被3和7整除")

1.3not 条件:条件为真返回False,条件为假返回True。

is_man = False
if not is_man:
    print("不是个男人")

  说明,当多个逻辑运算符在一起时,可以进行换行,建议的格式如下:

# 导入包的时候,应该将导入的语句放在文件的顶部,这样方便下方代码可以在任何时候使用工具包中的代码
import random

player = int(input("请输入您要出的拳:1(剪刀)/2(石头)/3(布)"))
computer = random.randint(1, 3)
print("您出的拳为:%s,电脑出的拳为:%s" % (player, computer))
if ((player == 1 and computer == 3)
        or (player == 2 and computer == 1)
        or (player == 3 and computer == 2)):
    print("电脑输了")
elif player == computer:
    print("平局")
else:
    print("电脑赢了")

  if语句可以进行嵌套,如下:

ticket = input("是否买票了(N/Y)?")
if ticket == "Y":
    safe = input("安检是否通过(N/Y)?")
    if safe == "Y":
        print("安检通过了,可以进候车室")
    else:
        print("安检未通过,不能进入候车室")
else:
    print("未买票,请先买票")

  注:所有的标准对象均可用于布尔测试,同类型的对象可以比较大小,每个对象天生都有True或者False值与其对应。

  None,0,0.0+0.0j,"",[],()等的布尔值均为False。

1.4if语句的注意点

  • 1.区间判断
score = float(input("请输入你的成绩:"))
# 在某些语言里,判断区间不能连写,需要使用逻辑运算符来连接 score >= 0 and score < 60
# Python里可以使用连续的区间判断
if 60 > score >=0:
    print("不及格")
  • 2.隐式类型转换
if 4:  # if后面需要的是一个bool类型的值,如果if后面不是布尔类型,会自动转换成为布尔类型
    print("hello world")
  • 3.三元表达式(对if...else语句的简写)

  例如如果x>y的结果为真,则a=12,否则a=13:

a=12 if x>y else 13

2.while循环

  程序的三大流程分别为顺序(从上到下),分支(根据条件判断,决定执行代码的分支),循环(让特定代码重复执行)。

   while语句的一般形式为:

while 条件:
    循环体

  实例,计算1+2+3+...99的和。

i = 1
count = 0
while i <= 100:
    count += i
    i += 1  # python中没有i++
print(count)

  注:可以使用Ctrl+C来结束循环。

while...else语句

  当while条件中为False时执行else代码块:

i = 1
while i < 10:
    print("i的值为:", i)
    i += 1
else:
    print("i的值为10,程序跳出while循环,执行else语句块内容")

  如果while循环体的语句只有一条语句,则该语句可以和while在同一行。

i = 1
while i : print("无限循环")

3.for循环

  for循环可以用来遍历任何序列,如列表和字符串等。

  for循环的一般形式为:

for 变量名 in sequence:  # in的后面必须是一个可迭代对象,目前接触的可迭代对象:字符串,列表,元祖,字典,集合,range
    循环体
else:
没有通过break退出循环,循环结束后,会执行的代码

  实例:

names=["zhangsan", "lisi", "wangwu", "boxiaoyuan"]
for name in names:
    print(name)

应用场景:

  在迭代遍历嵌套的数据类型时,例如一个列表包含了多个字典。

  需求:要判断某一个字典中是否存在指定的值,如果存在,提示并且退出循环,如果不存在,在循环整体结束后,给出一个统一的提示。

students = [{"name": "小明", "sex": "", "age": "18"},
            {"name": "张红", "sex": "", "age": "22"}]

for student in students:
    if student.get("name") == "小山":
        break
else:
    print("抱歉,没有找到小山")

4.range()函数

  range()是内置的可以用来生成数字列表的方法,根据传入的值生成可迭代对象,顾头不顾尾,例如range(0,10,1),其中0为开始值(包括),10为结束值(不包括),1为步长,因此会生成[0,1,2,3,4,5,6,7,8,9]。

for i in range(0, 10, 1):
    print(i)

  另外,也可以使用len方法结合range,遍历列表:

names = ["zhangsan", "lisi", "wangwu", "boxiaoyuan"]
for i in range(len(names)):
    print(names[i])

5.break和continue

  • break和continue在Python里只能用在循环语句里。
  • break关键字用来结束for循环或者while循环,for...else或者while...else后的else均不执行,continue关键字用来结束for或者while的本次循环,然后接着执行下次循环

break

i = 0
while i < 5:
    i += 1
    if i == 3:
        break
    print(i)  # 输出结果为1和2

continue

i = 0
while i < 5:
    i += 1
    if i == 3:
        continue
    print(i)  # 输出1 2 4 5

  while...else,当while中遇到break也不会执行else中语句块

i = 0
while i < 5:
    i += 1
    if i == 3:
        break
    print(i)  # 1 2
else:
    print("执行了else中的内容")

6.pass语句

  pass关键字在python里没有意义,只是单纯的用来占位,保证语句的完整性。

names = ["zhangsan", "lisi", "wangwu", "boxiaoyuan"]
for name in names:
    if name == "wangwu":
        pass
print("执行了pass")
print("name的值:", name)

 

posted @ 2019-01-10 22:11  博小园  阅读(250)  评论(0编辑  收藏  举报
回到顶部