python点阵显示数字_程序点滴001_Python模拟点阵数字
嘗試過很多編程語言,寫過不少程序(當然,基本上都是些自娛自樂或給自己用的工具類的小玩意兒),逐漸認識到編寫程序是一個不斷完善、不斷優化的過程——編程首先要有一個想法(目標),圍繞這個目標形成最基本的功能邏輯,測試證明功能有效之后就算目標基本實現了。隨后,可以擴展基本功能的應用領域,加強程序的容錯能力和交互性,逐漸形成一個更完善更健壯的程序。以下通過一個小例子來對此過程稍作展示:
在計算器上、電梯上、LED顯示屏上,都可以看到用點陣表示的數字
這里,我們嘗試用Python來模擬點陣數字,簡而言之,就是把數字放大(^_^)
一、設計點陣數字的顯示效果
為了簡化,我們這里只考慮0~9這十個阿拉伯數字,每個數字點陣都是5行4列,在Python中可以用tuple來表示。(在設計點陣字模的過程中,你也可以體驗一下當美工或字體設計師的感覺,@_@)。在Python中,這個過程很簡單(以下僅以0,1兩個數字為例)。
FONTCOL=4
FONTROW=5
zero=( " ** ",
"* *",
"* *",
"* *",
" ** ")
one=( " * ",
" ** ",
" * ",
" * ",
" ***")
二、 測試輸出效果
為了考察數字點陣的輸出效果,也為了驗證將來的輸出邏輯,可以用一段最簡單的程序把所有字模輸出。功能邏輯很簡單:
a. 對于一個序列中的每個數字,找到其對應字模,輸出該字模的第一行,空一格;然后輸出下一個數字對應字模的第一行,空格,直到全部數字對應字模的第一行都已輸出
b. 繼續依次輸出每一行,直到結束(在本程序中是5行,即FONTROW)
完整程序:
import sys
FONTCOL=4
FONTROW=5
#以下構建數字點陣
zero=(" ** ",
"* *",
"* *",
"* *",
" ** ")
one= (" * ",
" ** ",
" * ",
" * ",
" ***")
two= (" ** ",
"* *",
" * ",
" * ",
"****")
three=(" ** ",
"* *",
" **",
"* *",
" ** ")
four= (" * ",
" ** ",
"* * ",
"****",
" * ")
five= ("****",
"* ",
"****",
" *",
"****")
six= (" ** ",
"* ",
"*** ",
"* *",
" ** ")
seven=(" ***",
"* *",
" * ",
" * ",
" ***")
eight=(" ** ",
"* *",
" ** ",
"* *",
" ** ")
nine= (" ** ",
"* *",
" ***",
" *",
" ** ")
digits=(zero,one,two,three,four,five,six,seven,eight,nine) #將所有數字字模合成一個元組
i=0
while i
col=0
while col<10: #此處輸出全部字模,共計10個
print(digits[col][i],end=" ")
col+=1
print("") #換行,輸出字模下一行
i+=1
輸出效果:
三、優化和完善1——根據輸入的不同,顯示不同的輸出
通過argv讀取輸入參數(即用戶想要顯示的具體數字),若用戶未提供參數,則提供使用說明和示例輸出
這里就可以把上面用到測試輸出代碼稍作調整,形成一個函數show_numbers。(注意其print部分有小調整)
核心代碼:
import sys
FONTCOL=4
FONTROW=5
#以下構建數字點陣
#略
digits=(zero,one,two,three,four,five,six,seven,eight,nine) #將所有數字字模合成一個元組
def show_number(nums):
i=0
while i
col=0
while col
print(digits[int(nums[col])][i],end=" ")
col+=1
print("") #換行,輸出字模下一行
i+=1
def show_usage():
print("請在程序名之后提供15個數字以內的整數")
print("程序名.py 0123456789")
show_number('0123456789')
if len(sys.argv)==2:
show_number(sys.argv[1])
else:
show_usage()#如果未提供參數或提供的參數過多,則輸出使用說明
四、優化和完善2——對輸入進行檢查
以上代碼已經可以應付基本需求了,但對于用戶的錯誤輸入沒有抵抗能力。我們計劃從以下幾個方面進行優化:
a. 限制用戶的最大輸入字符個數
在DOS界面,一行最多顯示80個字符,字模每個占4字符,字模間有1字符空格,在考慮行尾的換行符,所以我們一次最多允許輸入80/(4+1)-1=15個數字。
b. 限制用戶只能輸入阿拉伯數字
如果用戶誤輸入非數字信息,如英文字符等,則int()函數會報 ValueError,抓住這個Error并做提示
調整后的程序:
try:
if len(sys.argv)==2:
if len(sys.argv[1])<16:
show_number(sys.argv[1])
else:
show_usage()
else:
show_usage()#如果未提供參數或提供的參數過多,則輸出使用說明
except ValueError:
print("\n\n未能正確顯示全部信息!!——出現了非數字的字符!\n")
show_usage()
總結
以上是生活随笔為你收集整理的python点阵显示数字_程序点滴001_Python模拟点阵数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bayes决策理论(一):最小错误率和最
- 下一篇: 富养还是穷养,决定孩子的一生