关于字符模拟七段显示器的题目
任务描述本关任务:编写一个时间显示程序,用字符模拟七段显示器进行一个具体时间的显示。
相关知识
为了完成本关任务,你需要掌握:1.如何获取数组的长度,2.如何遍历数组。
七段显示器
电子手表、计算器等电子设备经常依靠七段显示器进行数字的显示。为了组成这些数字,这类设备需要“打开”或“关闭”七段显示器的某些部分。
可以用字符模拟七段显示器进行显示输出,一个数字表示为一个三行三列的字符矩阵,如下所示:
#_#
|_|
|_|
其中'#'表示一个空格,'_'是下划线,'|'是竖线。
数组的length属性用于记录数组中有多少个元素或存储单元,即记录数组的长度是多少。
编程要求
用户输入时、分、秒,要求用字符模拟七段显示器进行显示输出,并且在时分之间、分表之间用一个分隔标识隔开。分隔标识的第一行是一个空格,第二行和第三行是一个小数点字符’.’。
例如:输入8 21 37,输出如下
__ _ __
| ||_|. _||. _||
|_||_|.|_ |. _||
测试说明
平台会对你编写的代码进行测试:
测试输入:12 34 56;
预期输出:
_ _ __
| _|. _||_|.|_ |_
||_ . _||. _||_| 七段顯示器(Seven-segment display)
我寫了 Python 供參考,你試試自己寫寫看 C++ 吧
Python 代碼:
def SevenSegment(h, m, s):
# 先將即將輸出符號分別以 上,中,下 三個階段儲存進字典裡,方便之後運用
numbers = {
0: [" _ ", "| |", "|_|"],
1: [" ", "|", "|"],
2: [" _ ", " _|", "|_ "],
3: [" _ ", " _|", " _|"],
4: [" ", "|_|", "|"],
5: [" _ ", "|_ ", " _|"],
6: [" _ ", "|_ ", "|_|"],
7: [" _ ", "|", "|"],
8: [" _ ", "|_|", "|_|"],
9: [" _ ", "|_|", " _|"],
":": [" ", " . ", " . "]}
# 對照以上字典,根據 上,中,下 正確位置輸入對應符號
def decoder(arr, n):
res = arr[:]
for i in range(3):
res.append(numbers)
return res
# 創建新列表包含三個子列表,分別表示 上,中,下 三層
res = [[], [], []]
# 輸入小時
if h >= 10:
a, b = divmod(h, 10)
res = decoder(res, a)
res = decoder(res, b)
else:
res = decoder(res, 0)
res = decoder(res, h)
# 輸入冒號 ":"
res = decoder(res, ":")
# 輸入分鐘
if m <= 0:
res = decoder(res, 0)
res = decoder(res, m)
else:
a, b = divmod(m, 10)
res = decoder(res, a)
res = decoder(res, b)
# 輸入冒號 ":"
res = decoder(res, ":")
# 輸入秒
if s <= 0:
res = decoder(res, 0)
res = decoder(res, s)
else:
a, b = divmod(s, 10)
res = decoder(res, a)
res = decoder(res, b)
return res # 返回完整七段顯示器
if __name__ == "__main__":
timer = SevenSegment(8, 21, 37) # 範例
for digit in timer:
print(*digit) # 打印 _ _ _ _ _
| | |_|. _| |. _| |
|_| |_|.|_ |. _| | 作业自己写{:10_256:} 就是,作业自己写
页:
[1]