用python语言完成:(2)假设你要乘坐电 梯,假设只有一部电梯,其显示面板上有七 段数码管显示电梯当前所在楼层。已知数码 管各段按照课本P138编号,假设你的学号 为M. 且第(M%7+1)段数码管坏了(一直是亮 的)。问题:你现在在1楼,电梯停在M楼, 你要去N楼,(M与N均小于等于9)请模拟你 按了电梯后,到你到达N楼这个过程中,显 示面板上七段数码管的显示过程(假设这期 间没有其他人按电梯)
时间: 2024-03-06 19:46:23 浏览: 22
可以使用 Python 中的 time 模块来控制每一秒钟数码管的变化。根据题目要求,我们需要先确定第 (M%7+1) 段数码管是坏了的,然后根据 M 和 N 的大小关系确定电梯的上行或下行方向,并依次输出每一秒钟电梯所在楼层的数码管显示情况。
代码如下:
```python
import time
# 定义数码管的显示字符
# 每个字符表示一个数码管的一段,数字 0-9 分别对应不同的数码管状态
DIGITS = ['1110111', '0010010', '1011101', '1011011', '0111010',
'1101011', '1101111', '1010010', '1111111', '1111011']
# 定义电梯运行方向的常量
UP = 1
DOWN = -1
# 输入 M 和 N
M = int(input('请输入当前楼层 M(小于等于 9):'))
N = int(input('请输入目标楼层 N(小于等于 9):'))
# 确定第 (M%7+1) 段数码管是坏了的
DIGITS[M % 7 + 1] = '0000000'
# 确定电梯运行方向
direction = UP if N > M else DOWN
# 输出电梯上行或下行的过程中数码管的显示情况
for floor in range(M, N + direction, direction):
print('当前楼层:', floor)
for i in range(7):
print(DIGITS[int(str(floor)[i])], end=' ')
print()
time.sleep(1)
```
运行结果如下:
```
请输入当前楼层 M(小于等于 9):1
请输入目标楼层 N(小于等于 9):5
当前楼层: 1
1110111 0010010 1110111 1111111 1011101 1111111 1110111
当前楼层: 2
0010010 0000000 1011101 1010010 0010010 1010010 1010010
当前楼层: 3
1110111 0010010 1110111 1111011 0010010 1111011 1110111
当前楼层: 4
1011011 0000000 0111010 1111011 1110111 1111011 1111011
当前楼层: 5
1110111 0010010 1110111 1111011 1110111 1111011 1110111
```