我是Python新手。完成教程后,我正在尝试构建小型应用程序以提高自己。我正在制作一个小的控制台日记程序。
import os
def greetings():
name = input("Who is using program : ")
return "Hello "+name+" welcome to the diary."
def what_todo():
print("What would you like to do today ?")
print("Taking notes (1) \nReading notes (2)")
choice = int(input())
return choice
def do():
if what_todo() == 1:
file_name = input("Please name today's diary : ")
f = open(file_name,"w")
f.write(input())
f.close()
elif what_todo() == 2:
file_name = input("Which diary you want to read : ")
if os.path.isfile(file_name):
f = open(file_name,"r")
for x in f:
print(x)
else:
print("file does not exist")
def main():
print(greetings())
do()
if __name__ == "__main__":
main()
我有三件事要问:
if what_todo() == 1:
时,它会运行what_todo()函数
但是我只希望返回what_todo()函数,当然print会在第二次调用elif语句时重复。有没有办法做到这一点,或者我错了?像不必要的功能或其他任何东西感谢您的回答。 输出:
This is the output :
hilal@crescent:~/Diary$ python diary.py
Who is using program : L
Hello L welcome to the diary.
What would you like to do today ?
Taking notes (1)
Reading notes (2)
1
Please name today's diary : a
aaa
hilal@crescent:~/Diary$ python diary.py
Who is using program : L
Hello L welcome to the diary.
What would you like to do today ?
Taking notes (1)
Reading notes (2)
2
What would you like to do today ?
Taking notes (1)
Reading notes (2)
2
Which diary you want to read : a
aaa
答案 0 :(得分:1)
是的,那些print
是多余的,因为它们的唯一目的似乎是向用户显示消息。如果要在input
输入值时向用户显示一些文本,则应将字符串作为input
函数的参数传递,例如:
input("What would you like to do today ?")
另外,在TypeError
int
中将类型更改为str
时,我会检查choice = int(input())
,例如当输入为foobar
时。
文件名是字符串,因此您可以将所需的扩展名附加到用户输入的文件名字符串,例如:
final_file_name = '{}.txt'.format(file_name)
将获得.txt
分机。同时检查用户是否已经输入了扩展名。
如果您对彻底审核感兴趣,请在CodeReviewSE上询问
答案 1 :(得分:0)
您要求what_todo()
输入,而您只想拨打一次。所以你需要调用一次并保存它返回的值。有很多方法可以做到,但这里有一个:
def main():
print(greetings())
action = what_todo()
do(action)
def do(action):
if action == 1:
您可以像这样添加文件名扩展名:
file_name = input("Please name today's diary : ") + ".txt"
虽然在实际程序中,您还需要验证输入文件名是否有效。
答案 2 :(得分:0)
您可以运行what_todo()
函数并将返回的值保存在变量中。然后在if条件中使用变量。
关于文件名 - 一旦您收到用户的输入,您可以使用+
运算符附加所需的任何扩展名。 file_name
只是一个字符串。所以你可以根据需要更新它 -
file_name += '.txt'