我心中的王者:Python-第5章 程序的流程控制使用if语句

我心中的王者:Python-第5章 程序的流程控制使用if语句

一个程序如果是按部就班从头到尾,中间没有转折,其实是无法完成太多工作。设计过程难免会需要转折,这个转折在程序设计的术语称流程控制,本章将完整讲解有关if语句的流程控制。另外,与程序流程设计有关的关系运算符与逻辑运算符也将在本章做说明,因为这些是if语句流程控制的基础。

5-1 关系运算符

Python语言所使用的关系运算符表:

在这里插入图片描述

上述运算如果是真会传回True,如果是伪会传回False。

实例1: 下列会传回True。
在这里插入图片描述

实例2: 下列会传回False。

在这里插入图片描述

5-2 逻辑运算符

Python所使用的逻辑运算符:

and —相当于逻辑符号AND
or —相当于逻辑符号OR
not —相当于逻辑符号NOT
下列是逻辑运算符and的图例说明。
在这里插入图片描述

下列是逻辑运算符or的图例说明。
在这里插入图片描述

实例1: 下列会传回True。

在这里插入图片描述

实例2: 下列会传回False。
在这里插入图片描述

实例3: 下列会传回True。
在这里插入图片描述

实例4: 下列会传回False。
在这里插入图片描述

下列是逻辑运算符not的图例说明。
在这里插入图片描述

逻辑运算结果如果是真则传回True,如果是伪则传回False。

**实例5:**下列会传回True。

在这里插入图片描述

**实例6:**下列会传回False。
在这里插入图片描述

5-3 if语句

这个if语句的基本语法如下:

 if  (条件判断):
       程序代码区块

上述观念是如果条件判断是True,则执行程序代码区块,如果条件判断是False,则不执行程序代码区块。如果程序代码区块只有一道指令,可将上述语法写成下列格式。

 if  (条件判断): 程序代码区块

可以用下列流程图说明这个if语句:

在这里插入图片描述

如果读者有学习过其他程序语言,例如,Visual Basic、C、JavaScript等,在条件表达式中是使用大括号“{ }”,将if语句的程序代码区块包夹做区隔。如下所示(以C语言为实例):

 if (age < 20) {
    printf(“你年龄太小”);
    printf(“需年满20岁才可购买烟酒”);
 }

在Python内是使用内缩方式区隔if语句的程序代码区块,编辑程序时可以用Tab键内缩或是直接内缩4个字符空间,表示这是if语句的程序代码区块。相同内容,可以用下列方式处理。

   If (age < 20)# 程序代码区块1
          print(“你年龄太小”) # 程序代码区块2
          print(“需年满20岁才可购买烟酒”)# 程序代码区块2

在Python中内缩程序代码是有意义的,相同的程序代码区块,必须有相同的内缩,否则会产生错误。

实例1: 正确的if语句程序代码。
在这里插入图片描述

实例2: 不正确的if语句程序代码,下列因为任意内缩造成错误。

在这里插入图片描述

上述笔者讲解if语句是True时需内缩4个字符空间,读者可能会问可不可以内缩5个字符空间,答案是可以的,但是记得相同程序区块必须有相同的内缩空间。不过如果你是使用Python的IDLE编辑环境,当输入if语句后,只要单击Enter键,编辑程序会自动内缩4个字符空间

程序实例ch5_1.py: if语句的基本应用。

# ch5_1.py
age = input("请输入年龄: ")
if (int(age) < 20):
    print("你年龄太小")
    print("需年满20岁才可以购买烟酒")

执行结果

请输入年龄: 15
你年龄太小
需年满20岁才可以购买烟酒

程序实例ch5_2.py: 输出绝对值的应用。

# ch5_2.py
print("输出绝对值")
num = input("请输入任意整值: ")
x = int(num)
if (int(x) < 0):
    x = abs(x)
print("绝对值是 %d" % int(x))

执行结果

输出绝对值
请输入任意整值: 11
绝对值是 11

5-4 if … else语句

程序设计时更常用的功能是条件判断为True时执行某一个程序代码区块,当条件判断为False时执行另一段程序代码区块,此时可以使用if … else语句,它的语法格式如下:

 if  (条件判断):        # 小括号可以省略
        程序代码区块一
 else:
        程序代码区块二

上述观念是如果条件判断是True,则执行程序代码区块一,如果条件判断是False,则执行程序代码区块二。可以用下列流程图说明这个if … else语句:
在这里插入图片描述

程序实例ch5_3.py: 重新设计ch5_1.py,多了年龄满20岁时的输出。

# ch5_3.py
age = input("请输入年龄: ")
if (int(age) < 20):
    print("你年龄太小")
    print("需年满20岁才可以购买烟酒")
else:
    print("欢迎购买烟酒")

执行结果

请输入年龄: 40
欢迎购买烟酒

程序实例ch5_4.py: 奇数偶数的判断。

# ch5_4.py
print("奇数偶数判断")
num = input("请输入任意整值: ")
rem = int(num) % 2
if (rem == 0):
    print("%d 是偶数" % int(num))
else:
    print("%d 是奇数" % int(num))

执行结果

奇数偶数判断
请输入任意整值: 65
65 是奇数

5-5 if … elif …else语句

这是一个多重判断,程序设计时需要多个条件作比较时就比较有用,例如:在美国成绩计分是采取A、B、C、D、F等,通常90-100分是A,80-89分是B,70-79分是C,60-69分是D,低于60分是F。若是使用Python可以用这个语句,很容易就完成这个工作。这个语句的基本语法如下:

 if  (条件判断一):
         程序代码区块一
 elif (条件判断二):
         程序代码区块二
 …
 else:
         程序代码区块n

上述观念是,如果条件判断一是True则执行程序代码区块一,然后离开条件判断。否则检查条件判断二,如果是True则执行程序代码区块二,然后离开条件判断。如果条件判断是False则持续进行检查,上述elif的条件判断可以不断扩充,如果所有条件判断是False则执行程序代码n区块。下列流程图是假设只有2个条件判断说明这个if … elif … else语句。

在这里插入图片描述

程序实例ch5_5.py:请输入数字分数,系统将响应A、B、C、D或F等级。

# ch5_5.py
print("计算最终成绩")
score = input("请输入分数: ")
sc = int(score)
if (sc >= 90):
    print(" A")
elif (sc >= 80):
    print(" B")
elif (sc >= 70):
    print(" C")
elif (sc >= 60):
    print(" D")
else:
    print(" F")

执行结果

计算最终成绩
请输入分数: 68
 D

程序实例ch5_6.py: 有一地区的票价收费标准是100元。

但是如果小于等于6岁或大于等于80岁,收费是打2折。
但是如果是7-12岁或60-79岁,收费是打5折。
请输入岁数,程序会计算票价。

# ch5_6.py
print("计算票价")
age = input("请输入年龄: ")
age = int(age)
ticket = 100
if age >= 80 or age <= 6:
    ticket = ticket * 0.2
    print("票价是: %d" % ticket)
elif age >= 60 or age <= 12:
    ticket = ticket * 0.5
    print("票价是: %d" % ticket)
else:
    print("票价是: %d" % ticket)

执行结果

请输入年龄: 22
票价是: 100

上述程序的第6行和第9行,如果你对于运算符执行的优先级没有太大的把握,建议可以直接用小括号将条件判断括起来,可参考ch5_6_1.py。

# ch5_6_1.py
print("计算票价")
age = input("请输入年龄: ")
age = int(age)
ticket = 100
if (age >= 80) or (age <= 6):
    ticket = ticket * 0.2
    print("票价是: %d" % ticket)
elif (age >= 60) or (age <= 12):
    ticket = ticket * 0.5
    print("票价是: %d" % ticket)
else:
    print("票价是: %d" % ticket)

程序实例ch5_7.py: 这个程序会要求输入字符,然后会告知所输入的字符是大写字母、小写字母、阿拉伯数字或特殊字符。

# ch5_7.py
print("判断输入字符类别")
ch = input("请输入字符: ")
if ord(ch) >= ord("A") and ord(ch) <= ord("Z"):
    print("这是大写字符")
elif ord(ch) >= ord("a") and ord(ch) <= ord("z"):
    print("这是小写字符")
elif ord(ch) >= ord("0") and ord(ch) <= ord("9"):
    print("这是数字")
else:
    print("这是特殊字符")

执行结果

请输入字符: a
这是小写字符

5-6 嵌套的if语句

所谓的嵌套的if语句是指在if语句内有其他的if语句,下列是一种情况的实例。
在这里插入图片描述

其实Python允许加上许多层,不过层次一多,未来程序维护会变得比较困难。

程序实例ch5_8.py: 测试某一年是否润年,润年的条件是首先可以被4整除(相当于没有余数),这个条件成立时,还必须符合,它除以100时余数不为0或是除以400时余数为0,当2个条件皆符合才算润年。

# ch5_8.py
print("判断输入年份是否润年")
year = input("请输入年分: ")
rem4 = int(year) % 4
rem100 = int(year) % 100
rem400 = int(year) % 400
if rem4 == 0:
    if rem100 != 0 or rem400 == 0:
        print("%s 是润年" % year)
    else:
        print("%s 不是润年" % year)
else:
    print("%s 不是润年" % year) 

执行结果

请输入年分: 1737
1737 不是润年

5-7 尚未设定的变量值None

有人在程序设计时,喜欢将所有变量一次先予以定义,在尚未用到此变量时先设定这个变量的值是None,如果此时用type( )函数了解它的类别时将显示“NoneType”,如下所示:
在这里插入图片描述

通常在程序设计时,可使用下列方式自我测试。

程序设计ch5_9.py: if语句与None的应用。

# ch5_9.py
flag = None
if flag == None:
    print("尚未定义flag")

执行结果

尚未定义flag

习题

  1. 请设计一个程序,如果输入是负值则将它改成正值输出,如果输入是正值则将它改成负值输出,如果输入非数字则列出输入错误。

  2. 请设计一个程序,此程序可以执行下列3件事:

若输入是大写字符,请改成小写字符输出。
若输入是小写字符,请改成大写字符输出。
若输入是阿拉伯数字,则直接输出。
若输入其他字符,则列出输入错误。
3. 请重新设计第四章实作题第4和5题,用户可以先选择温度转换方式,然后输入一个温度,可以转换成另一种温度。

  1. 有一个百货公司庆祝50年周年庆,消费满10万元可打9折,消费满8万元可打95折,消费满5万元,可打98折。如果今年是50岁的消费者不论消费金额都打95折,请设计这个程序。

  2. 假设麦当劳打工薪资如下:

小于120小时(月),每小时是120小时工资的80%。
等于120小时(月),每小时是150元。
介于121至150小时(月),每小时是120小时工资的1.2倍。
大于150小时(月),每小时是120小时工资的1.6倍。
请输入工作时数,然后可以计算薪资。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值