av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

Python通過類的組合模擬街道紅綠燈

瀏覽:35日期:2022-07-11 08:21:15

一,紅綠燈揭示板案例思路

1. 創(chuàng)建Traffic_light紅綠燈類

(1)靜態(tài)屬性 :

<1> 綠燈時間,<2> 黃燈時間 , <3> 紅燈時間, <4> 兩塊顯示時間的電子屏

(2)動態(tài)屬性

<1> 輸入紅黃綠時間函數(靜態(tài)函數),<2> 紅黃綠時間倒計時函數 ,<3> 構造電子屏數字的顯示函數,<4> 顯示兩塊電子屏綁定兩位數的顯示函數<5> 實例化對象展示電子屏函數

2. 電子屏類的創(chuàng)建(Light):

python中沒有數組,因此自己創(chuàng)建函數把獲取到的值存放到數組中

(存放內容: 20行,10列的布爾值)

3. input_time(color:str)函數的創(chuàng)建

<1> 導入colorama包并初始化實現windows命令行下顏色字體打印效果<2> 輸入紅黃綠時間的字體成對應的顏色<3> 通過colorama類方法實現輸入的紅黃綠時間為對應的顏色展示<4> 對輸入的數字進行校驗(必須為1-99之間的正數。因為一塊電子屏只記錄一位數字)<5> 返回相應的值

4. Countdown數字倒計時函數的創(chuàng)建

<1> 通過while循環(huán)讓三個燈的狀態(tài)一直循環(huán)持續(xù)<2> 對于紅黃綠燈輸入的數字進行遞減打印流程如下#流程: 清屏-->打印完后 -->暫停1秒鐘-->清屏 -->數字減一后再打印-->再暫停1秒鐘-->清屏-->再數字減一打印<3> 導入time,os,colorama等需要的包

5.build_LED_number函數的創(chuàng)建

之前創(chuàng)建的電子屏是默認False的狀態(tài)。分別構造0-9的狀態(tài)在電子屏中True的狀態(tài)的顯示

6.print_LED函數的創(chuàng)建

兩塊電子屏,分別顯示輸入時間的第一位和第二位數字.如果數字為單數則前面用零補齊的方法顯示。兩塊屏并排顯示每一位數字,從而展示電子版的效果

7.注意事項:

因為我們用到了os,及colorama類。所以最終效果的展示不是在pycharm中展示。而是在windows的cmd命令行中展示。

原因是因為我們代碼中調用了os.system('cls')這個清屏命令。在pycharm中是很難做到清屏的效果。

另外在pycharm中對于電子屏的展示效果也不如windows cmd中展示的效果俱佳。因此運行程序是請在windows命令行中運行。

二,紅綠燈揭示板代碼的呈現

import timeimport osfrom colorama import init,Fore,Back,Style#命令行模式字體顏色初始化init(autoreset=True)#電子屏類class Light: #構造函數 def __init__(self): self.light = [] #存儲行列數組的集合 #自動初始化 self.prepare_light() def prepare_light(self): ''' 電子屏的創(chuàng)建 python中沒有數組.因此通過類,函數來創(chuàng)建數組得到一個20行10列的數組 :return: ''' for row in range(20): #20行 temp = [] # 臨時存儲每行10個圈 for col in range(10): #10列temp.append(False) #默認燈都是不亮的因此通過布爾類型的False表示不亮的狀態(tài) #把行列排的200個燈的狀態(tài)存入到light集合中 self.light.append(temp)#紅綠燈類class Traffic_light: #構造函數,靜態(tài)屬性 def __init__(self,green_time,yellow_time,rea_time): self.green_time = green_time #綠燈時間 self.yellow_time = yellow_time #黃燈時間 self.red_time = rea_time #紅燈時間 #通過類的組合調用Light類函數 self.number01 = Light() #創(chuàng)建第一個電子屏 self.number02 = Light() #創(chuàng)建第二個電子屏 #紅黃綠等時間倒計時函數 def countdown(self): while True: #流程: 清屏-->打印完后 -->暫停1秒鐘-->清屏 -->數字減一后再打印-->再暫停1秒鐘-->清屏-->再數字減一打印 for number in range(self.green_time,-1,-1):#第一個-1代表取值到0,如果設置0則取值取不到0.第二個-1代表數字減一os.system('cls') #清屏self.start_display(number,'green') #調用start_display函數傳數字及顏色time.sleep(1) #停止一秒鐘 # 黃燈倒計時 for number in range(self.yellow_time,-1,-1):os.system('cls') #清屏self.start_display(number,'yellow')time.sleep(1) #停止一秒鐘 # 紅燈倒計時 for number in range(self.red_time,-1,-1):#第一個-1代表取值到0,如果設置0則取值取不到0.第二個-1代表數字減一os.system('cls') #清屏self.start_display(number,'red')time.sleep(1) #停止一秒鐘 @staticmethod #靜態(tài)方法不需要初始化 def input_time(color:str): # 設置全局變量(便于靜態(tài)方法使用) time = '' while True: if color.lower() in ['green','綠色','綠','綠燈']:print(Fore.GREEN + '請輸入綠燈的時間:',end='') #實現打印字體呈現顏色效果time = input() if color.lower() in ['yellow', '黃色', '黃', '黃燈']:print(Fore.YELLOW + '請輸入黃燈的時間:', end='')time = input() if color.lower() in ['red', '紅色', '紅', '紅燈']:print(Fore.RED + '請輸入紅燈的時間:', end='')time = input() #校驗輸入的是否合規(guī) if not time.isdigit():print('輸入的值不符合要求。【要求:必須是1-99之間的正數。】')continue else:time_number = int(time) # 因為time是字符串.拿到數字后轉成Int類型再判斷if time_number < 1 or time_number > 99: print('輸入的值不符合要求。【要求:必須是1-99之間的正數。】') continueelse: return time_number def build_LED_number(self,char:str): ''' :param char: LED燈數字的構造 :return: 返回temp_LED這個數組 ''' temp_LED = Light() #臨時創(chuàng)建新的數組 if char == '0': #構造0 for row in range(20):for col in range(10): if row < 2: #最上面兩列 temp_LED.light[row][col] = True if row > 17: #最下面兩列 temp_LED.light[row][col] = True if col < 2:#最左邊兩列 temp_LED.light[row][col] = True if col > 7: #最后面兩列 temp_LED.light[row][col] = True elif char == '1': #構造1 for row in range(20):for col in range(10): if col > 7: #最后面兩列 temp_LED.light[row][col] = True elif char == '2': #構造2 for row in range(20):for col in range(10): if row < 2: # 最上面兩列 temp_LED.light[row][col] = True if col > 7 and row < 9: # 最后面兩列 temp_LED.light[row][col] = True if row == 9 or row == 10: # 中間兩行 temp_LED.light[row][col] = True if col < 2 and row >10: #左邊列 temp_LED.light[row][col] = True if row > 17: # 最下面兩列 temp_LED.light[row][col] = True elif char == '3': #構造3 for row in range(20):for col in range(10): if row < 2: # 最上面兩列 temp_LED.light[row][col] = True if col > 7 : # 最后面兩列 temp_LED.light[row][col] = True if row == 9 or row == 10: # 中間兩行 temp_LED.light[row][col] = True if row > 17: # 最下面兩列 temp_LED.light[row][col] = True elif char == '4': # 構造4 for row in range(20):for col in range(10): if col < 2 and row <9: # 最上面兩列 temp_LED.light[row][col] = True if col > 7: # 最后面兩列 temp_LED.light[row][col] = True if row == 9 or row == 10: # 中間兩行 temp_LED.light[row][col] = True elif char == '5': # 構造5 for row in range(20):for col in range(10): if row < 2: temp_LED.light[row][col] = True if col < 2 and row < 9: temp_LED.light[row][col] = True if row == 9 or row == 10: temp_LED.light[row][col] = True if col > 7 and row > 10: temp_LED.light[row][col] = True if row > 17: temp_LED.light[row][col] = True elif char == '6': # 構造6 for row in range(20):for col in range(10): if row < 2: temp_LED.light[row][col] = True if col < 2: temp_LED.light[row][col] = True if row == 9 or row == 10: temp_LED.light[row][col] = True if col > 7 and row > 10: temp_LED.light[row][col] = True if row > 17: temp_LED.light[row][col] = True elif char == '7': # 構造7 for row in range(20):for col in range(10): if row < 2: temp_LED.light[row][col] = True if col > 7: temp_LED.light[row][col] = True elif char == '8': #構造8 for row in range(20):for col in range(10): if row < 2: #最上面兩列 temp_LED.light[row][col] = True if row > 17: #最下面兩列 temp_LED.light[row][col] = True if row == 9 or row == 10: # 中間兩行 temp_LED.light[row][col] = True if col < 2:#最左邊兩列 temp_LED.light[row][col] = True if col > 7: #最后面兩列 temp_LED.light[row][col] = True elif char == '9': # 構造9 for row in range(20):for col in range(10): if row < 2: # 最上面兩列 temp_LED.light[row][col] = True if col < 2 and row < 9: temp_LED.light[row][col] = True if row > 17: # 最下面兩列 temp_LED.light[row][col] = True if row == 9 or row == 10: # 中間兩行 temp_LED.light[row][col] = True if col > 7: # 最后面兩列 temp_LED.light[row][col] = True #返回值 return temp_LED def print_LED(self,color:str): for row in range(20): #打印第一個數 for col01 in range(10):if self.number01.light[row][col01] == True: if color == 'green': print(Fore.GREEN + '●',end='') elif color == 'yellow': print(Fore.YELLOW + '●',end='') elif color == 'red': print(Fore.RED + '●',end='')else: print(' ',end='') # 兩個全角空格 注釋:○占用的字符相當于兩個全角空格的占位 print('t',end='') #打印第二個數 for col02 in range(10):if self.number02.light[row][col02] == True: if color == 'green': print(Fore.GREEN + '●',end='') elif color == 'yellow': print(Fore.YELLOW + '●',end='') elif color == 'red': print(Fore.RED + '●',end='')else: print(' ',end='') #換行 print() def start_display(self,number:int,color:str): ''' 電子屏展示 :param number:電子屏上展示的數字 :param color: 電子屏上展示的顏色 :return: ''' number_str = '%02d' % number #傳進來的數字2位顯示 self.number01 = self.build_LED_number(number_str[0]) #把數字的第一位給第一個電子屏 self.number02 = self.build_LED_number(number_str[1]) #把數字的第二位給第二個電子屏 #在電子屏上顯示 self.print_LED(color)if __name__ == '__main__': green_time = Traffic_light.input_time('綠燈') yellow_time = Traffic_light.input_time('黃燈') red_time = Traffic_light.input_time('紅燈') #實例化 traffic01 = Traffic_light(green_time,yellow_time,red_time) traffic01.countdown()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产精品美女一区二区 | 国产成人免费一区二区60岁 | 免费国产视频在线观看 | 亚洲第一视频网站 | 久久久www成人免费精品 | 欧美啊v在线观看 | 成人伊人 | 美美女高清毛片视频免费观看 | 黄色片大全在线观看 | 91精品国产一区 | 国产一区久久 | 国产精品色 | 国产精品久久久久久久久免费丝袜 | 午夜影院网站 | 九色91视频| 国产精品爱久久久久久久 | 成人免费视频 | 久久av网 | 欧美日韩久久 | av永久免费| 本地毛片 | 一区二区免费 | 人人鲁人人莫人人爱精品 | 免费午夜视频在线观看 | 亚洲精品国产电影 | 97精品超碰一区二区三区 | 啪啪免费| www.国产精品| 中文字幕日韩三级 | 美女视频网站久久 | 中文字幕日韩在线 | 欧美在线一区二区三区四区 | 北条麻妃国产九九九精品小说 | 网站黄色在线 | 亚洲精品久久久久久久久久吃药 | 亚洲性视频在线 | 91国内精精品久久久久久婷婷 | 激情欧美一区二区三区中文字幕 | 在线国产视频观看 | 国产精品明星裸体写真集 | 91精品国产综合久久精品图片 |