前言
我们已经开启了Python编程的学习之旅。最初,我们认识了Python,了解到它在众多领域的广泛应用。接着,我们成功搭建了Python的运行环境,这是编程实践的基础,如同给战士配备了精良的武器。
我们从最基本的操作学起,写出了第一行Python代码,体验到编程的乐趣。之后,我们学会了数据录入,让程序能够与人交互。还深入学习了Python与浏览器交互、常用数据类型、数学运算符及多条数据录入方法,逐步充实编程知识。
我们掌握了条件和逻辑运算符,使程序能够根据条件做出判断,有了自己的“思考”能力。此前的学习为我们打下了坚实基础,后续我们将进一步深入,挖掘Python编程更多的魅力。
什么是if语句
一、if语句的概念
在Python编程中,if语句是一种非常重要的控制结构。简单来说,if语句就像是程序中的一个“判断官”。它允许程序根据特定的条件来决定是否执行某一段代码。
例如,在日常生活中,我们可能会有这样的思考:如果今天下雨,我就带伞;如果没下雨,我就不带伞。在Python程序里,if语句就是用来实现这种根据条件进行决策的功能。
二、if语句的基本语法
if语句的基本语法格式如下:
if condition:
# 如果条件为真,执行这里的代码
statement1
statement2
...
这里的“condition”是一个条件表达式,它可以是比较运算(如a > b)、逻辑运算(如a and b)或者其他能够返回True或False的表达式。当“condition”的值为True时,缩进的“statement”代码块就会被执行。如果“condition”的值为False,那么缩进块内的代码将被跳过。
例如:
num = 5
if num > 3:
print("这个数字大于3")
在这个例子中,因为变量num的值是5,5大于3,所以条件表达式“num > 3”的值为True,那么“print("这个数字大于3")”这行代码就会被执行。
三、if - else语句
除了基本的if语句,还有if - else语句。它的作用是当条件为真时执行一个代码块,当条件为假时执行另一个代码块。
其语法格式如下:
if condition:
# 如果条件为真,执行这里的代码
statement1
else:
# 如果条件为假,执行这里的代码
statement2
例如:
num = 2
if num > 3:
print("这个数字大于3")
else:
print("这个数字不大于3")
在这个例子中,由于num的值为2,“num > 3”这个条件为假,所以会执行else后面的“print("这个数字不大于3")”。
四、if - elif - else语句
当我们有多个条件需要判断时,就可以使用if - elif - else语句。
语法格式如下:
if condition1:
# 如果条件1为真,执行这里的代码
statement1
elif condition2:
# 如果条件1为假且条件2为真,执行这里的代码
statement2
else:
# 如果以上条件都为假,执行这里的代码
statement3
例如:
num = 4
if num > 5:
print("这个数字大于5")
elif num > 3:
print("这个数字大于3但不大于5")
else:
print("这个数字不大于3")
在这个例子中,因为num的值为4,“num > 5”为假,但是“num > 3”为真,所以会执行“elif num > 3:”后面的代码块,即打印“这个数字大于3但不大于5”。
五、if语句的应用场景
- 数据验证 在处理用户输入的数据时,我们经常需要使用if语句来验证数据是否符合要求。例如,在一个要求用户输入年龄的程序中,我们可以使用if语句来检查用户输入的年龄是否在合理范围内。
age = int(input("请输入你的年龄:"))
if age < 0 or age > 150:
print("你输入的年龄不合理")
else:
print("你的年龄是", age)
- 游戏开发 在游戏开发中,if语句也有广泛的应用。例如,判断游戏角色是否碰到障碍物,是否达到某个任务目标等。 假设在一个简单的跳跃游戏中,当角色的跳跃高度超过一定值时,就给予奖励。
jump_height = 10
if jump_height > 8:
print("你获得了额外奖励!")
- 数据分析 在数据分析中,if语句可以用来对数据进行分类处理。例如,将一组数据中的正数和负数分开。
data = [1, -2, 3, -4, 5]
positive_numbers = []
negative_numbers = []
for num in data:
if num > 0:
positive_numbers.append(num)
elif num < 0:
negative_numbers.append(num)
print("正数有:", positive_numbers)
print("负数有:", negative_numbers)
if语句是Python编程中控制程序流程的关键工具,掌握好它可以让我们编写的程序更加灵活和智能。
课堂练习
以下是一些关于if语句的课堂练习题:
练习一:判断数字的正负性
题目: 编写一个程序,使用if语句判断用户输入的数字是正数、负数还是零。 代码:
num = float(input("请输入一个数字:"))
if num > 0:
print("这个数字是正数")
elif num < 0:
print("这个数字是负数")
else:
print("这个数字是零")
答案解释: 首先,程序通过input函数获取用户输入的数字,并使用float函数将其转换为浮点数类型存储在变量num中。然后,使用if - elif - else语句进行判断。如果num大于0,满足if条件,就会执行print("这个数字是正数");如果num小于0,满足elif条件,就会执行print("这个数字是负数");如果num既不大于0也不小于0,那就只能是0,此时满足else条件,执行print("这个数字是零")。
练习二:判断成绩等级
题目: 给定学生的考试成绩(满分100分),使用if语句判断其成绩等级。90分及以上为A,80 - 89分为B,70 - 79分为C,60 - 69分为D,60分以下为E。 代码:
score = int(input("请输入学生的成绩:"))
if score >= 90:
print("A")
elif score >= 80:
print("B")
elif score >= 70:
print("C")
elif score >= 60:
print("D")
else:
print("E")
答案解释: 程序先获取学生的成绩并转换为整数类型存储在score中。然后从高分到低分依次判断。如果score大于等于90,满足第一个if条件,输出“A”;如果不满足,继续判断score是否大于等于80,满足则输出“B”,以此类推。当所有前面的条件都不满足时,也就是成绩小于60分,执行else部分,输出“E”。
练习三:判断是否为闰年
题目: 编写一个程序,使用if语句判断用户输入的年份是否为闰年。闰年的判断规则是:能被4整除但不能被100整除的年份为闰年,或者能被400整除的年份也是闰年。 代码:
year = int(input("请输入一个年份:"))
if (year % 4 == 0 and year % 100!= 0) or year % 400 == 0:
print(year, "是闰年")
else:
print(year, "不是闰年")
答案解释: 程序获取用户输入的年份并转换为整数存储在year中。然后通过条件表达式(year % 4 == 0 and year % 100!= 0) or year % 400 == 0来判断是否为闰年。如果满足这个条件,说明是闰年,执行print(year, "是闰年");否则执行else部分,输出该年份不是闰年。其中%是取模运算符,用于获取除法运算的余数,通过判断余数是否符合闰年规则来确定年份的性质。
练习四:判断数字的奇偶性
题目: 编写一个程序,使用if语句判断用户输入的整数是奇数还是偶数。 代码:
num = int(input("请输入一个整数:"))
if num % 2 == 0:
print(num, "是偶数")
else:
print(num, "是奇数")
答案解释: 同样先获取用户输入的整数并存储在num中。通过判断num除以2的余数是否为0来确定其奇偶性。如果num % 2 == 0,说明能被2整除,是偶数,执行print(num, "是偶数");否则就是奇数,执行else部分的print(num, "是奇数")。
练习五:判断三角形类型
题目: 输入三角形的三条边长,使用if语句判断该三角形是等边三角形、等腰三角形还是一般三角形。 代码:
a = float(input("请输入第一条边长:"))
b = float(input("请输入第二条边长:"))
c = float(input("请输入第三条边长:"))
if a == b == c:
print("这是一个等边三角形")
elif a == b or a == c or b == c:
print("这是一个等腰三角形")
else:
print("这是一个一般三角形")
答案解释: 程序分别获取三角形的三条边长并存储在a、b、c中。首先判断三条边是否都相等,如果a == b == c,满足条件则输出“这是一个等边三角形”;如果不满足等边三角形条件,再判断是否有两条边相等,即a == b or a == c or b == c,满足则输出“这是一个等腰三角形”;如果前面两个条件都不满足,说明三条边都不相等,就是一般三角形,执行else部分输出“这是一个一般三角形”。在判断边长相等时,使用==运算符进行比较。
练习六:判断月份天数
题目: 编写一个程序,根据用户输入的月份(1 - 12),使用 if 语句判断该月份的天数(不考虑闰年情况,假设 2 月有 28 天)。 代码:
month = int(input("请输入月份(1 - 12):"))
if month in [1, 3, 5, 7, 8, 10, 12]:
print(month, "月有 31 天")
elif month in [4, 6, 9, 11]:
print(month, "月有 30 天")
else:
print(month, "月有 28 天")
答案解释: 程序获取用户输入的月份并转换为整数存储在month中。通过in关键字判断month是否在表示 31 天的月份列表[1, 3, 5, 7, 8, 10, 12]或者 30 天的月份列表[4, 6, 9, 11]中,如果在相应列表中,就输出该月份对应的天数;如果都不在,那就只能是 2 月,输出 28 天。
练习七:判断字符类型
题目: 输入一个字符,使用 if 语句判断它是字母、数字还是其他字符。 代码:
char = input("请输入一个字符:")
if char.isalpha():
print(char, "是字母")
elif char.isdigit():
print(char, "是数字")
else:
print(char, "是其他字符")
答案解释: 程序获取用户输入的一个字符存储在char中。isalpha方法用于判断字符是否为字母,如果char.isalpha()返回True,则说明是字母,执行相应的print语句;isdigit方法用于判断字符是否为数字,如果char.isdigit()返回True,则说明是数字,执行对应的print语句;如果前两个条件都不满足,就执行else部分,说明是其他字符。
练习八:判断年龄范围并输出相应信息
题目: 根据用户输入的年龄,使用 if 语句进行如下判断:如果年龄小于 18 岁,输出“未成年人”;如果年龄在 18 岁到 60 岁之间(包括 18 岁和 60 岁),输出“成年人”;如果年龄大于 60 岁,输出“老年人”。 代码:
age = int(input("请输入年龄:"))
if age < 18:
print("未成年人")
elif age <= 60:
print("成年人")
else:
print("老年人")
答案解释: 首先获取用户输入的年龄并转换为整数存储在age中。然后通过if - elif - else结构进行判断。如果age小于 18,满足第一个if条件,输出“未成年人”;如果age大于等于 18 且小于等于 60,满足elif条件,输出“成年人”;如果age大于 60,满足else条件,输出“老年人”。
练习九:判断登录状态
题目: 假设系统中存在用户名“admin”和密码“123456”。编写一个程序,使用 if 语句根据用户输入的用户名和密码判断登录是否成功,如果成功,输出“登录成功”,否则输出“登录失败”。 代码:
username = input("请输入用户名:")
password = input("请输入密码:")
if username == "admin" and password == "123456":
print("登录成功")
else:
print("登录失败")
答案解释: 程序分别获取用户输入的用户名和密码,存储在username和password中。然后通过if语句判断输入的用户名和密码是否与预设的“admin”和“123456”完全匹配,如果username == "admin"和password == "123456"这两个条件同时满足,说明登录信息正确,执行print("登录成功");否则执行else部分,输出“登录失败”。
练习十:判断数字是否在指定区间内
题目: 输入一个数字,使用 if 语句判断它是否在区间(10, 20)内(不包括 10 和 20),如果在该区间内,输出“该数字在区间(10, 20)内”,否则输出“该数字不在区间(10, 20)内”。 代码:
num = float(input("请输入一个数字:"))
if 10 < num < 20:
print("该数字在区间(10, 20)内")
else:
print("该数字不在区间(10, 20)内")
答案解释: 获取用户输入的数字并存储在num中。通过10 < num < 20这样简洁的条件表达式判断num是否在指定区间内,如果满足该条件,说明数字在区间中,执行print("该数字在区间(10, 20)内");否则执行else部分,输出“该数字不在区间(10, 20)内”。这种写法利用了 Python 中条件表达式的连续比较特性,使代码更加简洁直观。
课堂练习进阶
练习一:判断数字的正负性
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise1():
"""
该函数用于判断用户输入数字的正负性。
获取用户输入的数字,若大于 0 则输出为正数,小于 0 则输出为负数,等于 0 则输出为零。
"""
# 获取用户输入的数字,转换为浮点数类型
num = float(pw_input("请输入一个数字:"))
if num > 0:
put_text("这个数字是正数")
elif num < 0:
put_text("这个数字是负数")
else:
put_text("这个数字是零")
if __name__ == "__main__":
exercise1()
练习二:判断成绩等级
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise2():
"""
根据用户输入的成绩判断等级。
成绩大于等于 90 分为 A,80 - 89 分为 B,70 - 79 分为 C,60 - 69 分为 D,小于 60 分为 E。
"""
# 获取用户输入的成绩,转换为整数类型
score = int(pw_input("请输入学生的成绩:"))
if score >= 90:
put_text("A")
elif score >= 80:
put_text("B")
elif score >= 70:
put_text("C")
elif score >= 60:
put_text("D")
else:
put_text("E")
if __name__ == "__main__":
exercise2()
练习三:判断是否为闰年
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise3():
"""
判断用户输入的年份是否为闰年。
能被 4 整除但不能被 100 整除的年份为闰年,或者能被 400 整除的年份也是闰年。
"""
# 获取用户输入的年份,转换为整数类型
year = int(pw_input("请输入一个年份:"))
if (year % 4 == 0 and year % 100!= 0) or year % 400 == 0:
put_text(year, "是闰年")
else:
put_text(year, "不是闰年")
if __name__ == "__main__":
exercise3()
练习四:判断数字的奇偶性
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise4():
"""
判断用户输入的整数是奇数还是偶数。
通过判断该整数除以 2 的余数是否为 0 来确定奇偶性。
"""
# 获取用户输入的整数,转换为整数类型
num = int(pw_input("请输入一个整数:"))
if num % 2 == 0:
put_text(num, "是偶数")
else:
put_text(num, "是奇数")
if __name__ == "__main__":
exercise4()
练习五:判断三角形类型
from pywebio3.input import input, input_group, FLOAT
from pywebio3.output import put_text
def exercise5():
"""
根据用户输入的三角形三条边长判断三角形类型。
三条边相等为等边三角形,两条边相等为等腰三角形,三边都不相等为一般三角形。
"""
# 使用 input_group 同时获取三条边的长度,均为浮点数类型,注意要给每个输入项设置 name 参数
data = input_group("请输入三角形三条边的长度", [
input(name='a', type=FLOAT), # 这里 'a' 就是 name 参数,指定了这个输入项的名称,方便后续提取对应的值
input(name='b', type=FLOAT),
input(name='c', type=FLOAT)
])
a = data['a'] # 通过名称来获取对应输入的值
b = data['b']
c = data['c']
if a == b == c:
put_text("这是一个等边三角形")
elif a == b or a == c or b == c:
put_text("这是一个等腰三角形")
else:
put_text("这是一个一般三角形")
if __name__ == "__main__":
exercise5()
练习六:判断月份天数
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise6():
"""
根据用户输入的月份判断该月的天数(不考虑闰年情况,2 月固定 28 天)。
1、3、5、7、8、10、12 月有 31 天,4、6、9、11 月有 30 天。
"""
# 获取用户输入的月份,转换为整数类型
month = int(pw_input("请输入月份(1 - 12):"))
if month in [1, 3, 5, 7, 8, 10, 12]:
put_text(month, "月有 31 天")
elif month in [4, 6, 9, 11]:
put_text(month, "月有 30 天")
else:
put_text(month, "月有 28 天")
if __name__ == "__main__":
exercise6()
练习七:判断字符类型
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise7():
"""
判断用户输入的字符是字母、数字还是其他字符。
使用字符串的 isalpha 和 isdigit 方法进行判断。
"""
# 获取用户输入的字符
char = pw_input("请输入一个字符:")
if char.isalpha():
put_text(char, "是字母")
elif char.isdigit():
put_text(char, "是数字")
else:
put_text(char, "是其他字符")
if __name__ == "__main__":
exercise7()
练习八:判断年龄范围并输出相应信息
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise8():
"""
根据用户输入的年龄判断所属阶段。
小于 18 岁为未成年人,18 岁到 60 岁(包括 18 岁和 60 岁)为成年人,大于 60 岁为老年人。
"""
# 获取用户输入的年龄,转换为整数类型
age = int(pw_input("请输入年龄:"))
if age < 18:
put_text("未成年人")
elif age <= 60:
put_text("成年人")
else:
put_text("老年人")
if __name__ == "__main__":
exercise8()
练习九:判断登录状态
from pywebio3.input import input, input_group
from pywebio3.output import put_text
def exercise9():
"""
判断用户输入的用户名和密码是否与预设的匹配,以确定登录状态。
预设用户名是 "admin",密码是 "123456"。
"""
# 使用 input_group 同时获取用户名和密码
data = input_group("请输入登录信息", [
input("账号", name='username', ),
input("密码", name='password', )
])
username = data['username']
password = data['password']
if username == "admin" and password == "123456":
put_text("登录成功")
else:
put_text("登录失败")
if __name__ == "__main__":
exercise9()
练习十:判断数字是否在指定区间内
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise10():
"""
判断用户输入的数字是否在区间(10, 20)内(不包括端点值)。
"""
# 获取用户输入的数字,转换为浮点数类型
num = float(pw_input("请输入一个数字:"))
if 10 < num < 20:
put_text("该数字在区间(10, 20)内")
else:
put_text("该数字不在区间(10, 20)内")
if __name__ == "__main__":
exercise10()
课后练习题
以下是将 pywebio 替换为 pywebio3 的 10 道练习题,同时包含题目、代码、代码解释和点评:
练习一:判断数字是否是质数
题目: 编写一个程序,使用 pywebio3 输入一个大于 1 的整数,判断该数字是否为质数。质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise1():
"""
该函数用于判断用户输入的数字是否为质数。
质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。
"""
# 获取用户输入的数字,转换为整数类型
num = int(pw_input("请输入一个大于 1 的整数:"))
if num <= 1:
put_text("请输入大于 1 的整数。")
return
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
put_text(f"{num} 是一个质数。")
else:
put_text(f"{num} 不是一个质数。")
if __name__ == "__main__":
exercise1()
代码解释:
- 使用
pw_input函数从pywebio3中获取用户输入的数字,并将其转换为整数存储在num变量中。 - 首先检查输入是否小于等于 1,如果是,则输出提示信息并返回。
- 假设输入的数是质数,将
is_prime设为True。 - 从 2 到
num的平方根加 1 的范围遍历,如果num能被其中任何一个数整除,说明不是质数,将is_prime设为False并退出循环。 - 最后根据
is_prime的值输出相应的结果。
点评: 这道题考查了学生对 for 循环、条件判断和数学概念(质数)的理解。同时,通过 pywebio3 实现了用户输入和输出的交互,让学生学会在 Web 环境下处理用户输入并输出结果。对于学生掌握循环和条件判断的综合运用有很好的帮助。
练习二:找出三个数中的最大值
题目: 使用 pywebio3 编写一个程序,让用户输入三个数,找出这三个数中的最大值。
from pywebio3.input import input, input_group, FLOAT
from pywebio3.output import put_text
def exercise2():
"""
该函数用于找出用户输入的三个数中的最大值。
使用 input_group 同时获取三个数,并比较大小。
"""
# 使用 input_group 同时获取三个数,均为浮点数类型
data = input_group("请输入三个数", [
input(name='num1', type=FLOAT),
input(name='num2', type=FLOAT),
input(name='num3', type=FLOAT)
])
num1 = data['num1']
num2 = data['num2']
num3 = data['num3']
max_num = num1
if num2 > max_num:
max_num = num2
if num3 > max_num:
max_num = num3
put_text(f"三个数中的最大值是: {max_num}")
if __name__ == "__main__":
exercise2()
代码解释:
- 使用
input_group函数从pywebio3中同时获取三个数,将它们存储在data字典中。 - 分别将三个数取出存储在
num1、num2和num3变量中。 - 假设
num1为最大值,存储在max_num中。 - 依次与
num2和num3比较,如果它们更大,则更新max_num的值。 - 最后输出最大值。
点评: 这道题主要练习了变量的赋值、条件判断和使用 input_group 进行多输入处理。帮助学生掌握如何在多个输入中找出最大值,是对基本逻辑思维和 pywebio3 多输入处理的巩固。
练习三:计算 BMI 并给出健康建议
题目: 使用 pywebio3 编写一个程序,让用户输入身高(cm)和体重(kg),计算 BMI 并给出健康建议。BMI = 体重(kg)/ 身高(m)的平方。
from pywebio3.input import input, input_group, FLOAT
from pywebio3.output import put_text
def exercise3():
"""
该函数用于根据用户输入的身高和体重计算 BMI,并给出健康建议。
BMI = 体重(kg)/ 身高(m)的平方
"""
# 使用 input_group 同时获取身高和体重,注意单位转换
data = input_group("请输入您的身高(cm)和体重(kg)", [
input("身高", name='height', type=FLOAT),
input("体重", name='weight', type=FLOAT)
])
height = data['height'] / 100 # 将身高从 cm 转换为 m
weight = data['weight']
bmi = weight / (height ** 2)
put_text(f"您的 BMI 是: {bmi:.2f}")
if bmi < 18.5:
put_text("您的体重过轻,建议增加营养。")
elif 18.5 <= bmi < 24.9:
put_text("您的体重正常,继续保持哦!")
elif 25 <= bmi < 29.9:
put_text("您超重了,建议适当运动和控制饮食。")
else:
put_text("您肥胖了,需要更加注重健康,加强锻炼和控制饮食哦。")
if __name__ == "__main__":
exercise3()
代码解释:
- 通过
input_group函数从pywebio3中获取用户输入的身高和体重,将它们存储在data字典中。 - 将身高从厘米转换为米。
- 计算 BMI 值。
- 根据 BMI 值使用
if-elif-else语句给出不同的健康建议。
点评: 这道题涉及到基本的数学计算、条件判断和用户输入处理,同时结合实际生活场景,让学生学会如何根据不同的条件输出不同的信息,并且涉及了单位转换的细节,有助于学生将编程知识应用到实际问题中。
练习四:判断能否构成直角三角形
题目: 使用 pywebio3 编写一个程序,让用户输入三角形的三条边长,判断能否构成直角三角形。利用勾股定理:a² + b² = c² 判断是否为直角三角形。
from pywebio3.input import input, input_group, FLOAT
from pywebio3.output import put_text
def exercise4():
"""
该函数用于根据用户输入的三角形三条边长,判断能否构成直角三角形。
利用勾股定理:a^2 + b^2 = c^2 判断是否为直角三角形。
"""
# 使用 input_group 同时获取三条边的长度,均为浮点数类型
data = input_group("请输入三角形三条边的长度", [
input(name='a', type=FLOAT),
input(name='b', type=FLOAT),
input(name='c', type=FLOAT)
])
a = data['a']
b = data['b']
c = data['c']
sides = [a, b, c]
sides.sort() # 对三边长度进行排序
if abs(sides[0] ** 2 + sides[1] ** 2 - sides[2] ** 2) < 1e-6: # 考虑浮点数运算的精度误差
put_text("这三条边可以构成直角三角形。")
else:
put_text("这三条边不能构成直角三角形。")
if __name__ == "__main__":
exercise4()
代码解释:
- 使用
input_group函数从pywebio3中获取三角形的三条边长。 - 将三条边存储在
a、b、c变量中,并将它们存储在sides列表中。 - 对
sides列表排序,以便于后续使用勾股定理判断。 - 利用勾股定理,考虑浮点数运算的精度误差,判断是否为直角三角形。
点评: 这道题要求学生理解勾股定理,并运用列表和条件判断。在处理浮点数运算时,引入了精度误差的考虑,培养学生处理复杂数学逻辑和实际编程问题中精度问题的能力。
练习五:根据温度输出不同的着装建议
题目: 使用 pywebio3 编写一个程序,让用户输入当前温度(单位:摄氏度),根据温度给出不同的着装建议。温度小于 10 度建议穿厚外套,10 - 20 度穿薄外套,20 - 30 度穿长袖,大于 30 度穿短袖。
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise5():
"""
该函数根据用户输入的温度给出不同的着装建议。
温度小于 10 度建议穿厚外套,10 - 20 度穿薄外套,20 - 30 度穿长袖,大于 30 度穿短袖。
"""
# 获取用户输入的温度,转换为浮点数类型
temperature = float(pw_input("请输入当前温度(单位:摄氏度):"))
if temperature < 10:
put_text("天气较冷,建议穿厚外套哦!")
elif 10 <= temperature < 20:
put_text("天气适中,穿薄外套比较合适。")
elif 20 <= temperature < 30:
put_text("天气有点热,穿长袖就可以啦。")
else:
put_text("天气很热,穿短袖吧!")
if __name__ == "__main__":
exercise5()
代码解释:
- 使用
pw_input函数从pywebio3中获取用户输入的温度,并将其转换为浮点数存储在temperature变量中。 - 通过
if-elif-else结构根据不同的温度范围给出不同的着装建议。
点评: 这道题是一个简单但实用的练习,让学生将条件判断应用到实际场景中,同时使用 pywebio3 处理用户输入,使程序更加具有交互性,增强学生对条件语句和输入输出的掌握。
练习六:判断是否是水仙花数
题目: 使用 pywebio3 编写一个程序,让用户输入一个三位数,判断该数是否为水仙花数。水仙花数是指一个 3 位数,它的每一位上的数字的 3 次幂之和等于它本身。
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise6():
"""
该函数用于判断用户输入的三位数是否为水仙花数。
水仙花数是指一个 3 位数,它的每一位上的数字的 3 次幂之和等于它本身。
"""
# 获取用户输入的数字,转换为整数类型
num = int(pw_input("请输入一个三位数:"))
if 100 <= num <= 999:
original_num = num
digit_sum = 0
while num > 0:
digit = num % 10
digit_sum += digit ** 3
num //= 10
if digit_sum == original_num:
put_text(f"{original_num} 是水仙花数。")
else:
put_text(f"{original_num} 不是水仙花数。")
else:
put_text("请输入一个三位数。")
if __name__ == "__main__":
exercise6()
代码解释:
- 用
pw_input从pywebio3获取用户输入的数字,并将其转换为整数存储在num中。 - 首先检查输入是否为三位数,如果不是则输出提示信息。
- 保存原始数字,使用
while循环提取数字的每一位,计算每一位的三次方并求和存储在digit_sum中。 - 比较
digit_sum和原始数字,输出相应结果。
点评: 这道题要求学生对数字的位数提取和数学计算有一定的理解,通过 while 循环和条件判断来实现,同时对用户输入进行了范围检查,巩固了学生对数字操作和循环的运用。
练习七:根据星期几推荐不同的活动
题目: 使用 pywebio3 编写一个程序,让用户输入星期几,根据输入的星期几推荐不同的活动。例如,周一至周五学习或工作,周六周日休息或娱乐。
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise7():
"""
该函数根据用户输入的星期几推荐不同的活动。
例如,周一至周五学习或工作,周六周日休息或娱乐。
"""
# 获取用户输入的星期几
day = pw_input("请输入星期几:")
if day.lower() in ['1', '2', '3', '4', '5']:
put_text("今天是工作日,努力学习或工作吧!")
elif day.lower() in ['6', '7']:
put_text("今天是周末,好好休息或娱乐一下吧!")
else:
put_text("请输入有效的星期几。")
if __name__ == "__main__":
exercise7()
代码解释:
- 使用
pw_input函数从pywebio3中获取用户输入的星期几存储在day变量中。 - 将
day转换为小写,通过if-elif-else结构根据不同的星期给出不同的活动建议。
点评: 这道题重点在于字符串的处理和条件判断,让学生学会处理用户输入的文本信息,并根据文本内容进行相应的操作,是对 if-elif-else 语句的进一步巩固和实际应用。
练习八:计算阶乘
题目: 使用 pywebio3 编写一个程序,让用户输入一个非负整数,计算该数的阶乘。n 的阶乘定义为 n! = n * (n - 1) * (n - 2) *... * 1。
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise8():
"""
该函数用于计算用户输入数字的阶乘。
n 的阶乘定义为 n! = n * (n - 1) * (n - 2) *... * 1
"""
# 获取用户输入的数字,转换为整数类型
num = int(pw_input("请输入一个非负整数:"))
if num < 0:
put_text("请输入一个非负整数。")
return
factorial = 1
for i in range(1, num + 1):
factorial *= i
put_text(f"{num} 的阶乘是: {factorial}")
if __name__ == "__main__":
exercise8()
代码解释:
- 使用
pw_input函数从pywebio3中获取用户输入的数字并转换为整数存储在num中。 - 先检查输入是否为非负整数,如果不是则输出提示信息并返回。
- 使用
for循环计算阶乘,累乘结果存储在factorial中。 - 输出结果。
点评: 这道题考查了学生对 for 循环和乘法运算的掌握,同时涉及到输入的检查,有助于学生理解阶乘的计算逻辑和编程实现。
练习九:根据输入的字符串长度输出不同信息
题目: 使用 pywebio3 编写一个程序,让用户输入一个字符串,根据字符串的长度输出不同信息。字符串长度小于 5 简短,5 到 10 中等,大于 10 较长。
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise9():
"""
该函数根据用户输入的字符串长度输出不同信息。
字符串长度小于 5 简短,5 到 10 中等,大于 10 较长。
"""
# 获取用户输入的字符串
string = pw_input("请输入一个字符串:")
length = len(string)
if length < 5:
put_text("您输入的字符串比较简短。")
elif 5 <= length <= 10:
put_text("您输入的字符串长度适中。")
else:
put_text("您输入的字符串较长。")
if __name__ == "__main__":
exercise9()
代码解释:
- 使用
pw_input函数从pywebio3中获取用户输入的字符串存储在string变量中。 - 计算字符串的长度存储在
length变量中。 - 通过
if-elif-else结构根据长度输出不同信息。
点评: 这道题主要练习了字符串长度的计算和条件判断,是对字符串处理和条件语句的基本应用,有助于学生熟悉字符串操作和条件判断的结合。
练习十:判断是否为回文数
题目: 使用 pywebio3 编写一个程序,让用户输入一个整数,判断该数是否为回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的数字。
from pywebio3.input import input as pw_input
from pywebio3.output import put_text
def exercise10():
"""
该函数用于判断用户输入的数字是否为回文数。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的数字。
"""
# 获取用户输入的数字,转换为整数类型
num = int(pw_input("请输入一个整数:"))
original_num = num
reversed_num = 0
while num > 0:
digit = num % 10
reversed_num = reversed_num * 10 + digit
num //= 10
if original_num == reversed_num:
put_text(f"{original_num} 是回文数。")
else:
put_text(f"{original_num} 不是回文数。")
if __name__ == "__main__":
exercise10()
代码解释:
- 使用
pw_input函数从pywebio3中获取用户输入的数字并转换为整数存储在num中。 - 保存原始数字。
- 使用
while循环将数字倒序存储在reversed_num中。 - 比较
original_num和reversed_num,输出相应结果。
点评: 这道题帮助学生理解数字的倒序操作和条件判断,同时通过 pywebio3 进行用户输入输出,巩固学生对循环和条件语句的运用,以及对回文数概念的编程实现。
这些练习题可以让学生在使用 pywebio3 的过程中,不断巩固 Python 的基础知识,同时增强他们在 Web 交互编程方面的能力。你可以根据学生的实际情况,对这些练习题进行讲解和指导,帮助他们更好地掌握相关知识。
总结
首先,我们从基础概念入手,了解了if语句是什么。它是编程中的一种控制结构,能够根据特定条件决定程序是否执行某段代码,就像日常生活中的决策一样。
接着,深入学习了if语句的基本语法。掌握如何正确书写条件表达式,以及当条件为真时如何让代码准确执行。同时,还学习了if - else语句,这种语句在条件判断上更加灵活,当条件成立时执行一组代码,不成立时则执行另一组。在此基础上,if - elif - else语句进一步拓展了多条件判断的能力,能够处理多个不同条件的情况,使程序能够根据不同情况做出更精准的反应。
在应用场景方面,if语句的应用极为广泛。在判断数字的正负性时,通过if语句可以轻松对输入的数字进行分类;在判断成绩等级时,依据设定的分数区间,利用if语句可以给学生的成绩划分出不同的等级;判断是否为闰年的情况,借助if语句和相关的数学逻辑,能够准确识别年份的性质;判断数字的奇偶性也是if语句的典型应用,根据数字除以2的余数情况来确定其奇偶;判断三角形类型时,使用if语句结合三角形三边关系,可以区分等边、等腰和一般三角形;判断月份天数时,通过if语句结合月份的特征,能够快速得出每个月的天数;判断字符类型时,利用if语句配合字符的判断方法,可以区分字母、数字和其他字符;判断年龄范围并输出相应信息,if语句能够根据不同年龄段给出恰当的提示;判断登录状态时,通过if语句对比输入的用户名和密码与预设值,确定登录是否成功;判断数字是否在指定区间内,if语句可以精确判断一个数字是否处于特定范围。
最后,通过课堂练习和进阶练习反复巩固对if语句的理解和应用。这些练习包括判断数字正负性、成绩等级、闰年、奇偶性、三角形类型、月份天数、字符类型、年龄范围、登录状态、数字区间等内容,通过不断地练习,能够更加熟练地运用if语句编写程序,提高解决实际问题的编程能力。
宝子们,我在 Python 的世界里摸爬滚打十余载,积累了不少心得体会。如今想把这些年的经验和知识毫无保留地分享给有缘的小伙伴。要是你对 Python 学习感兴趣,欢迎来试听一二,也可以随时在评论区留言或者私信我,咱们一起探讨,共同进步,开启 Python 学习的奇妙之旅!
人生苦短, 我用Python, 坚持每天学习, 坚持每天进步一点点...