簡體   English   中英

Python print() function 不在 while 循環中重新計算變量

[英]Python print() function not recalculating variables in a while loop

我正在嘗試編寫一個程序來計算給定時間和實際時間的差異,然后在 while 循環中顯示該增量。 我已經能夠完成大部分工作,到目前為止我發現的唯一問題是打印語句中的時間變量不會隨着循環運行而更新。

import datetime
import time
from os import system
from sys import platform

clear_screen = lambda: system("cls" if platform == "win32" else "clear")

# print("What is the time and date of your event?")
# year = int(input("Year: "))
# month = int(input("Month: "))
# day = int(input("Day: "))
# hour = int(input("Hour: "))
# minute = int(input("Minute: "))
i = 0
year = 2023
month = 1
day = 27
hour = 12
minute = 0
second = 00
today = datetime.datetime.now()
date_entry = datetime.datetime(year, month, day, hour, minute, second)

print(f"The current date & time: {today}")
print(f"The big day is: {date_entry}")
print()
print()
print(f"Tiff's Big day is going to be here soon:")
print()
event_count = date_entry - today
event_hour = event_count.total_seconds() / 3600
event_min = ((event_hour % 1) * (60 / 100)) * 100
event_sec = ((event_min % 1) * (60 / 100)) * 100


def countdown():
    print(f"{event_hour:.0f} Hours, {event_min:.0f} Minutes, {event_sec:.0f} seconds until big mode!!!!!")
    
while i < 50:
    i += 1
    countdown()
    time.sleep(2)
    # clear_screen()`

我感覺 print 語句中的時間變量沒有重新計算...我嘗試通過將變量移動到 countdown() function 中來重構程序。結果相同。

我期待腳本到 output 小時、分鍾和秒,直到定義的時間。 這部分效果很好。 然后暫停 2 秒(這有效),然后在重新計算時間增量后再次打印語句。 如果它失敗了,打印的時間與第一個打印語句的時間完全相同。

您可能還會注意到 clear_screen()。 這有點管用,它將清除所有 output。我希望弄清楚循環中打印的最后一行(即:40 小時,12 分鍾,56 秒,直到大模式......!)這是我的東西還沒看太多。 如果您有任何建議...

在此先感謝您的任何建議。

Output:當前日期和時間:2023-01-25 19:48:04.383425 大日子是:2023-01-27 12:00:00

Tiff 的重要日子即將到來:

距大模式還有 40 小時 12 分 56 秒,,,,, 大模式還有 40 小時 12 分 56 秒,!!!! 距大模式還有 40 小時 12 分 56 秒!!!!!! 距大模式還有 40 小時 12 分 56 秒!!!!!! 距大模式還有 40 小時 12 分 56 秒!!!!!!

小心調用時間函數,時間僅在第一次分配給變量,這里是 REPL 中的示例:

>>> import time
>>> time.time()
1674700748.035392
>>> time.time()
1674700749.2911549
>>> time.time()
1674700750.440412
>>> time.time()
1674700751.571879
>>> x = time.time()
>>> x
1674700755.0605464
>>> x
1674700755.0605464
>>> x
1674700755.0605464
>>> x
1674700755.0605464
>>> for i in range(5): print(time.time())
... 
1674700912.1213877
1674700912.1214447
1674700912.1214585
1674700912.1214688
1674700912.1214786
>>> for i in range(5): print(x)
... 
1674700755.0605464
1674700755.0605464
1674700755.0605464
1674700755.0605464
1674700755.0605464

如您所見,如果我多次調用time.time時間變化,但如果我將它分配給x ,則x始終具有相同的值。

以下是我為解決問題而編寫的代碼:

import datetime
import time
from os import system
from sys import platform
import cursor

# print("What is the time and date of your event?")
# year = int(input("Year: "))
# month = int(input("Month: "))
# day = int(input("Day: "))
# hour = int(input("Hour: "))
# minute = int(input("Minute: "))

year = 2023
month = 1
day = 27
hour = 12
minute = 0
second = 00
date_entry = datetime.datetime(year, month, day, hour, minute, second)

print(f"The current date & time: {datetime.datetime.now()}")
print(f"The big day is: {date_entry}")
print()
print()
print(f"Tiff's Big day is going to be here soon:")
print()

while True:
    event_count = date_entry - datetime.datetime.now()
    event_hour = event_count.total_seconds() / 3600
    event_min = ((event_hour % 1) * (60 / 100)) * 100
    event_sec = ((event_min % 1) * (60 / 100)) * 100
    print(f"{event_hour:.0f} Hours, {event_min:.0f} Minutes, {event_sec:.0f} seconds until big time!!!", end = "\r")
    cursor.hide()
    time.sleep(.5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM