一、课程介绍

本节课将结合前面所学知识,实现在地图上规划最佳救援路线,找到在森林中走丢的四只精灵并安全抵达出口。

A020 《紧急救援》 编程 源码_复习课

二、知识点

  • 复习 if...elif...else... 条件语句
  • 复习 and
  • 复习 for、if 嵌套

三、单词卡

start [stɑːrt] 开始

end [end] 终止

step [step] 步

order ['ɔːrdər] 命令

四、小试牛刀

4.1 源码操作

阳光小学举行了一场趣味投篮赛。在规定的时间内,投中数量大于30个,获得“神射手”称号;投中数量大于20个,小于等于30个,获得“获得超级射手”称号;投中数量大于10个,小于等于20个,获得“射手”称号;小于等于10个,获得“新手”称号。

要求:

运行程序后,要求输入投中数量;

根据输入的投篮数量,输出对应的称号;

每个判断条件中,不能使用 and 或 or;

输入范例如下所示。

A020 《紧急救援》 编程 源码_复习课_02

num = int(input("请输入投中数量:"))
if num > 30:
    print("获得神射手称号")
elif num > 20:
    print("获得超级射手称号")
elif num > 10:
    print("获得射手称号")
else:
    print("获得新手称号")

4.2 考考你

小明想实现一个简易的网站登录提示代码,仅当账号和密码分别为xiaoming和123时,才显示登录成功。以下哪个选项的代码符合要求?

A
user = input("请输入账号:")
password = input("请输入密码:")
if user=="xiaoming" and password=="123":
    print("登录成功")
else:
    print("账号或密码错误")
B
user = input("请输入账号:")
password = input("请输入密码:")
if user=="codemao" and password==123:
    print("登录成功")
else:
    print("账号或密码错误")
C
user = input("请输入账号:")
password = input("请输入密码:")
if user=="codemao" or password=="123":
    print("登录成功")
else:
    print("账号或密码错误")
答案:A

解析:分析题目可知,账号和密码要同时输入正确才判断登录成功,所以两个条件需要用 and 连接,故A选项正确,而C选项错误。

又因密码通过input输入后默认保存为字符串数据(带引号的数据),所以在判断时需将其与字符串"123"进行比较,故B选项错误。

五、扩展练习

A020 《紧急救援》 编程 源码_复习课_03

import turtle
start = [-300, -250]
end = [300, 250]
x = [-250, -150, 100, 50]
y = [100, -150, -100, 0]

turtle.bgpic('森林地图.gif')
p = turtle.Pen()
p.speed(20)
p.penup()
p.goto(start[0],start[1])
p.dot(40,'yellow')

p.goto(end[0],end[1])
p.dot(40,'green')

for i in range(4):
    p.goto(x[i],y[i])
    p.dot(40,'red')

turtle.addshape('阿短.gif')
p.shape('阿短.gif')
p.goto(start[0],start[1])
step = 34
d = 50
n = 0
p_x = start[0]
p_y = start[1]
p.pendown()
for i in range(step):
    print('剩余步数:',step - i)
    order = input('请输入要移动的方向,w上、s下、a左、d右:')
    if order == 'w':
        p_y = p_y +d
    elif order == 's':
        p_y = p_y -d
    elif order == 'a':
        p_x = p_x -d
    elif order == 'd':
        p_x = p_x +d
    else:
        print('浪费机会,剩余步数减一')
    p.goto(p_x,p_y)

    for j in range(4):
        if p_x == x[j] and p_y == y[j]:
            n = n + 1
if p_x == end[0] and p_y ==end[1]:
    if n ==4:
        print('救援任务圆满完成!')
    else:
        print('尚有精灵未救出,救援任务失败')
else:
    print('未抵达出口,迷失在迷雾森林')

turtle.done()

六、大开脑洞

新一代智能计算器出炉啦,不妨来试试?

A020 《紧急救援》 编程 源码_复习课_04

print('------新一代智能计算器-------')
a = input('加?减?乘?除?:')
b = int(input('输入第一个数:'))
c = int(input('输入第二个数:'))
if a == '加':
    print(b+c)
elif a == '减':
    print(b-c)
elif a == '乘':
    print(b*c)
else:
    print(b/c)
print('-------谢谢使用~下次见!-------')