- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是编程新手,我试图在不遵循特定教程的情况下构建这个生日提醒应用程序,而是尝试自己解决它,但我陷入了困境。
第一个函数将生日添加到 .txt 文件中,没问题。但对于第二个,无论我尝试从birthday_dict还是从文件中检索生日数据,该函数都不会运行。
对于第二个函数,我尝试调整这个https://www.geeksforgeeks.org/birthday-reminder-application-python/ ,但还是不行。
如果有人能帮助我,那就太好了。谢谢!
import datetime
from datetime import date, timedelta
birthday_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!')
最佳答案
该脚本包含一些错误。我会尽力解决他们的问题一对一。我给它们编号以供引用。
[1] 您不能在两个函数上使用相同的文件名。在您使用的一个地方./venv/birthday_log.txt',并在另一个地方使用
birthday_log.txt`(没有子文件夹)。
这可以通过将文件名移动到全局变量或函数参数。尤其是当你开始编程时,我强烈反对使用全局变量,所以让我们使用函数参数(见下文)
[2] 使用 date.today()
时,您将获得今天的日期作为类型变量“日期”。但是当你想将其与文本进行比较时,你需要将其转换到“str”。您通过调用 .strftime(...)
来正确执行此操作。但该调用将返回字符串值。它将不会修改现有的日期对象。所以你需要将结果存储在一个新变量中,以便你可以使用稍后再说。
[3] 测试是否找到今天的日期时,您使用的是 in
运算符带有一个日期对象(如[2]中提到的)和一个文件对象,该对象不会工作。我们需要在 in
运算符的两侧使用“字符串”。上左侧我们可以使用我们在[2]中创建的新变量,右侧则可以使用侧面,我们可以使用 line
来表示我们正在循环的当前行结束了。
print(type(variable))
查看变量的类型birthday_dict.update({name: date_str})
,您也可以简单地写入birthday_dict[name] = date_str
取出我在脚本最后写的两行并移动他们进入“主要”功能。这样你就可以使用一个变量文件名并删除重复的值。您可以使用全局变量也是如此,但正如前面提到的,最好避免它。包裹着“主”函数中的行将解决该问题。
关于全局变量:您有一个全局变量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")
关于python - 生日提醒应用: function doesn't display,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63717583/
main.cpp #include "Primes.h" #include int main(){ std::string choose; int num1, num2; w
似乎函数 qwertyInches() 应该可以工作但是当我在 main() 中调用它时它给了我 [Error] called object 'qwertyInches' is not a funct
我无法理解 C++ 语法的工作原理。 #include using namespace std; class Accumulator{ private: int value; public:
在 类中声明 函数成员时,我们可以同时执行这两种操作; Function first; Function() second; 它们之间有什么区别? 最佳答案 Function 代表任意函数: void
“colonna”怎么可能是一个简单的字符串: $('td.' + colonna).css('background-color','#ffddaa'); 可以正确突出显示有趣单元格的背景,并且: $
我正在尝试将网页中的动态参数中继到函数中,然后函数将它们传递给函数内部的调用。比如下面这个简化的代码片段,现在这样,直接传入参数是没有问题的。但是,如何在不为每个可能的 colorbox 参数设置 s
C++ 中是否有一种模式允许您返回一个函数,它返回一个函数本身。例如 std::function func = ...; do { func = func(); } while (func);
我正在将 Windows 程序集移植到 Linux。我有一些代码要移植。我实际上是 linux 中 C 的新手。我知道 C 基础知识是一样的! typedef struct sReader {
我一直在寻找一个很好的解释,所以我很清楚。示例: this.onDeleteHandler(index)}/> 对比 对比 this.nameChangedhandler(event, perso
function(){}.__proto__ === Function.prototype 和 Function.prototype === function(){}.__proto__ 得到不同的结
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function 据说 Propert
VBA 中的函数没有特殊类型。我很难理解如何在 Excel VBA 中将函数作为参数添加到函数中。 我想要完成的是这样的事情: function f(g as function, x as strin
所以我正在尝试制作一个包(我没有在下面包含我的 roxygen2 header ): 我有这个功能: date_from_text % dplyr::mutate(!!name := lubr
尝试从 std::function 派生一个类,对于初学者来说,继承构造函数。这是我的猜测: #include #include using namespace std; template cla
我正在尝试编写一个返回另一个函数的函数。我的目标是编写一个函数,它接受一个对象并返回另一个函数“search”。当我使用键调用搜索函数时,我想从第一个函数中给定的对象返回该键的值。 propertyO
我非常清楚函数式编程技术和命令式编程技术之间的区别。但是现在有一种普遍的趋势是谈论“函数式语言”,这确实让我感到困惑。 当然,像 Haskell 这样的一些语言比 C 等其他语言更欢迎函数式编程。但即
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我在stackoverflow上查过很多类似的问题,比如call.call 1 , call.call 2 ,但我是新人,无法发表任何评论。我希望我能找到关于 JavaScript 解释器如何执行这些
向 Twilio 发送 SMS 时,Twilio 会向指定的 URL 发送多个请求,以通过 Webhook 提供该 SMS 传送的状态。我想让这个回调异步,所以我开发了一个 Cloud Functio
作为 IaC 的一部分,A 功能应用 ,让我们将其命名为 FuncAppX 是使用 Terraform 部署的,它有一个内置函数。 我需要使用 Terraform 在函数应用程序中访问相同函数的 Ur
我是一名优秀的程序员,十分优秀!