ಪ್ರಾಜೆಕ್ಟ್ 7: ಕೌಂಟ್ಡೌನ್ ಟೈಮರ್ (Countdown Timer)
ಈ ಪ್ರಾಜೆಕ್ಟ್ನಲ್ಲಿ, ನಾವು ಒಂದು ಸರಳ ಕೌಂಟ್ಡೌನ್ ಟೈಮರ್ ಅನ್ನು ನಿರ್ಮಿಸುತ್ತೇವೆ. ಬಳಕೆದಾರರು ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸಮಯವನ್ನು ನಮೂದಿಸುತ್ತಾರೆ, ಮತ್ತು ಪ್ರೋಗ್ರಾಂ ಆ ಸಮಯದಿಂದ ಸೊನ್ನೆಗೆ ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ ಎಣಿಕೆ ಮಾಡುತ್ತದೆ.
ಕಲಿಕೆಯ ಪರಿಕಲ್ಪನೆಗಳು
timeಮಾಡ್ಯೂಲ್, ವಿಶೇಷವಾಗಿtime.sleep()whileಲೂಪ್- ಬಳಕೆದಾರರಿಂದ ಇನ್ಪುಟ್ ಪಡೆಯುವುದು ಮತ್ತು ಅದನ್ನು ಇಂಟಿಜರ್ಗೆ ಪರಿವರ್ತಿಸುವುದು.
print()ಫಂಕ್ಷನ್ನendಮತ್ತುflushಪ್ಯಾರಾಮೀಟರ್ಗಳು.
ಕೋಡ್
import time
def countdown_timer(seconds):
"""ನೀಡಿದ ಸೆಕೆಂಡುಗಳಿಂದ ಕೆಳಗೆ ಎಣಿಸುವ ಟೈಮರ್."""
while seconds > 0:
# ನಿಮಿಷಗಳು ಮತ್ತು ಸೆಕೆಂಡುಗಳನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು
mins, secs = divmod(seconds, 60)
# MM:SS ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಸಮಯವನ್ನು ಪ್ರದರ್ಶಿಸುವುದು
# :02d ಎಂದರೆ ಸಂಖ್ಯೆಯನ್ನು ಎರಡು ಅಂಕಿಗಳಲ್ಲಿ ಪ್ರದರ್ಶಿಸು, ಅಗತ್ಯವಿದ್ದರೆ ಮುಂದೆ ಸೊನ್ನೆ ಸೇರಿಸು
timer_format = f'{mins:02d}:{secs:02d}'
# ಅದೇ ಲೈನ್ನಲ್ಲಿ ಸಮಯವನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲು '\r' ಬಳಸುವುದು
print(timer_format, end='\r', flush=True)
# ಒಂದು ಸೆಕೆಂಡ್ ಕಾ���ುವುದು
time.sleep(1)
seconds -= 1
print("ಸಮಯ ಮುಗಿಯಿತು! (Time's up!)")
def main():
"""ಮುಖ್ಯ ಫಂಕ್ಷನ್."""
print("ಕೌಂಟ್ಡೌನ್ ಟೈಮರ್ಗೆ ಸ್ವಾಗತ!")
try:
user_input = input("ಕೌಂಟ್ಡೌನ್ಗಾಗಿ ಸಮಯವನ್ನು ಸೆಕೆಂಡುಗಳಲ್ಲಿ ನಮೂದಿಸಿ: ")
total_seconds = int(user_input)
if total_seconds <= 0:
print("ದಯವಿಟ್ಟು ಸೊನ್ನೆಗಿಂತ ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ.")
else:
countdown_timer(total_seconds)
except ValueError:
print("ತಪ್ಪಾದ ಇನ್ಪುಟ್. ದಯವಿಟ್ಟು ಪೂರ್ಣ ಸಂಖ್ಯೆಯನ್ನು ಮಾತ್ರ ನಮೂದಿಸಿ.")
if __name__ == "__main__":
main()
ವಿವರಣೆ
import time: ಸಮಯಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಫಂಕ್ಷನ್ಗಳನ್ನು ಬಳಸಲು ನಾವುtimeಮಾಡ್ಯೂಲ್ ಅನ್ನು ಇಂಪೋರ್ಟ್ ಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ.countdown_timer(seconds)ಫಂಕ್ಷನ್:while seconds > 0:: ಕೌಂಟ್ಡೌನ್ ಸೊನ್ನೆಯನ್ನು ತಲುಪುವವರೆಗೆ ಈ ಲೂಪ್ ಚಾಲನೆಯಲ್ಲಿರುತ್ತದೆ.mins, secs = divmod(seconds, 60):divmod()ಒಂದು ಉಪಯುಕ್ತ ಬಿಲ್ಟ್-ಇನ್ ಫಂಕ್ಷನ್. ಇದುsecondsಅನ್ನು 60 ರಿಂದ ಭಾಗಿಸಿ, ಭಾಗಲಬ್ಧ (ನಿಮಿಷಗಳು) ಮತ್ತು ಶೇಷ (ಸೆಕೆಂಡುಗಳು) ಎರಡನ್ನೂ ಒಂದೇ ಬಾರಿಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ.timer_format = f'{mins:02d}:{secs:02d}': ನಾವು ಸಮಯವನ್ನುMM:SSಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲು f-ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದೇವೆ.:02dಫಾರ್ಮ್ಯಾಟಿಂಗ್, 5 ಅನ್ನು05ಎಂದು ಪ್ರದರ್ಶಿಸುವಂತೆ ಮಾಡುತ್ತದೆ.print(..., end='\r', flush=True):end='\r':\r(Carriage Return) ಕ್ಯಾರೆಕ್ಟರ್ ಕರ್ಸರ್ ಅನ್ನು ಪ್ರಸ್ತುತ ಲೈನ್ನ ಆರಂಭಕ್ಕೆ ಸರಿಸುತ್ತದೆ. ಇದರಿಂದ, ಮುಂದಿನprintಸ್ಟೇಟ್ಮೆಂಟ್ ಹಳೆಯ ಸಮಯದ ಮೇಲೆ ಹೊಸ ಸಮಯವನ್ನು ಓವರ್ರೈಟ್ ಮಾಡುತ್ತದೆ. ಇದು ಒಂದೇ ಲೈನ್ನಲ್ಲಿ ಟೈಮರ್ ಅಪ್ಡೇಟ್ ಆಗುವಂತೆ ಕಾಣುವಂತೆ ಮಾಡುತ್ತದೆ.flush=True:printನ ಔಟ್ಪುಟ್ ಅನ್ನು ತಕ್ಷಣವೇ ಟರ್ಮಿನಲ್ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
time.sleep(1): ಪ್ರೋಗ್ರಾಂನ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು 1 ಸೆಕೆಂಡ್ ಕಾಲ ನಿಲ್ಲಿಸುತ್ತದೆ.seconds -= 1: ಪ್ರತಿ ಇಟರೇಶನ್ನ ನಂತರ ಕೌಂಟ್ಡೌನ್ನಿಂದ ಒಂದು ಸೆಕೆಂಡ್ ಅನ್ನು ಕಳೆಯುತ್ತದೆ.
main()ಫಂಕ್ಷನ್: ಬಳಕೆದಾರರಿಂದ ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಇನ್ಪುಟ್ ಪಡೆಯುತ್ತದೆ, ಅದನ್ನುintಗೆ ಪರಿವರ್ತಿಸುತ್ತದೆ ಮತ್ತುcountdown_timerಫಂಕ್ಷನ್ ಅನ್ನು ಕಾಲ್ ಮಾಡುತ್ತದೆ.try-exceptಬ್ಲಾಕ್ ಬಳಸಿ ತಪ್ಪಾದ ಇನ್ಪುಟ್ಗಳನ್ನು ಹ್ಯಾಂಡಲ್ ಮಾಡಲಾಗುತ್ತದೆ.