第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

生日提醒應(yīng)用程序:功能不顯示

生日提醒應(yīng)用程序:功能不顯示

一只斗牛犬 2023-07-11 10:35:54
我是編程新手,我試圖在不遵循特定教程的情況下構(gòu)建這個生日提醒應(yīng)用程序,而是嘗試自己解決它,但我被困住了。第一個函數(shù)將生日添加到 .txt 文件中,沒問題。但對于第二個,無論我嘗試從birthday_dict還是從文件中檢索生日數(shù)據(jù),該函數(shù)都不會運行。對于第二個功能,我嘗試調(diào)整這個https://www.geeksforgeeks.org/birthday-reminder-application-python/,但它仍然不起作用。如果有人能幫助我,那就太好了。謝謝!import datetimefrom datetime import date, timedeltabirthday_dict = {}def add_to_log():    name = input("Name: ")    date_str = input("Birthday (day/month) :")    birthday_dict.update({name: date_str})    with open('./venv/birthday_log.txt', mode='a') as birthday_log:        file = birthday_log.write(f'\n {name}:{date_str}')    print ('Birthday added!')def reminder():    file = open('birthday_log.txt', 'r')    today = date.today()    today.strftime("%d/%m")    flag = 0    for line in file:        if today in file:            line = line.split(':')            flag = 1            print (f'Today is {line[1]}\'s birthday!')
查看完整描述

2 回答

?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗 獲得超6個贊

該腳本包含一些錯誤。我將嘗試一一解決它們。我給它們編號以供參考。

  • [1] 您不要在這兩個函數(shù)上使用相同的文件名。在一處使用 ./venv/birthday_log.txt', and in another place you use birthday_log.txt`(不帶子文件夾)。

    這可以通過將文件名移動到全局變量或函數(shù)參數(shù)中來解決。特別是當(dāng)您開始編程時,我非常不鼓勵使用全局變量,所以讓我們使用函數(shù)參數(shù)(見下文)

  • [2] 使用時,date.today()您將今天的日期作為“日期”類型的變量獲取。但是當(dāng)你想將其與文本進(jìn)行比較時,你需要將其轉(zhuǎn)換為“str”。你通過調(diào)用它來正確地做到這一點.strftime(...)。但該調(diào)用將返回字符串值。它不會修改現(xiàn)有的日期對象。因此,您需要將結(jié)果存儲在一個新變量中,以便稍后使用。

  • [3] 當(dāng)測試是否找到今天的日期時,您使用in帶有日期對象(如[2]中提到的)和文件對象的運算符,這是不起作用的。我們需要在運算符的兩側(cè)使用“字符串” in。在左側(cè),我們可以使用在[2]中創(chuàng)建的新變量,在右側(cè),我們可以使用line它代表我們正在循環(huán)的當(dāng)前行。

還有一些提示:

  • 您可以使用print(type(variable))查看變量的類型

  • 除了使用之外,birthday_dict.update({name: date_str})您還可以簡單地編寫birthday_dict[name] = date_str

小“練習(xí)”

  • 將我在腳本最后編寫的兩行移動到“main”函數(shù)中。這樣您就可以使用一個變量作為文件名并刪除重復(fù)的值。您也可以使用全局變量,但正如前面提到的,最好避免使用。將這些行包裝在“主”函數(shù)中將解決該問題。

  • 關(guān)于全局變量:您有一個全局變量birthday_dict。考慮如何使其成為“局部”變量。提示:這與對文件名所做的更改非常相似。

import datetime

from datetime import date, timedelta



birthday_dict = {}

def add_to_log(filename):

    name = input("Name: ")

    date_str = input("Birthday (day/month) :")

    birthday_dict.update({name: date_str})


    # [1] Using a variable here makes it easier to ensure we only specify the

    # filename once

    with open(filename, mode='a') as birthday_log:

        file = birthday_log.write(f'\n {name}:{date_str}')

    print ('Birthday added!')


def reminder(filename):

    # [1] Using a variable here makes it easier to ensure we only specify the

    # filename once

    file = open(filename, 'r')

    today = date.today()

    # [2] After creating a reference for "today", you need to store the

    # "string" conversion in a new variable and use that later

    today_str = today.strftime("%d/%m")

    flag = 0

    for line in file:

        # [3] You want to check that the date you need is contained in the

        # line, not the file object

        if today_str in line:

            line = line.split(':')

            flag = 1

            print (f'Today is {line[1]}\'s birthday!')



add_to_log("birthday_log.txt")

reminder("birthday_log.txt")


查看完整回答
反對 回復(fù) 2023-07-11
?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊

要查看文件中的所有行,您需要.readlines()從變量運行 with open(),這將生成一個列表,如下所示:

file = open("test.txt", "r")
lines = file.readlines() # lines = ['hello','test']

lines變量將是一個列表,您可以執(zhí)行以下操作:

for line in lines:
    print(line)

另外,您可能想for today in line在第二個函數(shù)中編寫 , 。


查看完整回答
反對 回復(fù) 2023-07-11
  • 2 回答
  • 0 關(guān)注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號