函数调用和用户输入文件名,包含Python中的扩展名

时间:2018-02-18 22:23:58

标签: python

我是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语句时重复。有没有办法做到这一点,或者我错了?像不必要的功能或其他任何东西
  • 我正在获取文件名的用户输入,但是我想要创建 将文件作为" .txt"或者可能" .data"。我该怎么做?
  • 最后一件事。作为新手,如果你想分享我想要你的 关于我写的代码或建议的意见。

感谢您的回答。 输出:

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

3 个答案:

答案 0 :(得分:1)

  1. 是的,那些print是多余的,因为它们的唯一目的似乎是向用户显示消息。如果要在input输入值时向用户显示一些文本,则应将字符串作为input函数的参数传递,例如:

    input("What would you like to do today ?")
    

    另外,在TypeError int中将类型更改为str时,我会检查choice = int(input()),例如当输入为foobar时。

  2. 文件名是字符串,因此您可以将所需的扩展名附加到用户输入的文件名字符串,例如:

    final_file_name = '{}.txt'.format(file_name)
    

    将获得.txt分机。同时检查用户是否已经输入了扩展名。

  3. 如果您对彻底审核感兴趣,请在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'