如何读取输入并将其保存到文件中

时间:2017-08-06 08:25:34

标签: python python-3.x function

我在Python中学习编程。作为我的第一次尝试,我试图创建一个程序,需要用户键入用户的数据,然后程序存储它。如果可能,请将其写入.txt文件。

我从这开始;

userKey = ["name ","age ","gender "]
userValue = [input("name "),input("age "),input("gender ")]
userData = dict(zip(userKey, userValue))

但它只运行一次,所以我尝试了这个:

def userData():
    userKey = ["name ","age ","gender "]
    userValue = [input("name "),input("age "),input("gender ")]
    userData = dict(zip(userKey, userValue))

if __name__ == '__main__':
    print(userData)

但它没有做我的第一个代码所做的事情。我怎样才能继续前进。

5 个答案:

答案 0 :(得分:0)

def userData():
    userKey = ["name ","age ","gender "]
    userValue = [input("name "),input("age "),input("gender ")]
    userData = dict(zip(userKey, userValue))

if __name__ == '__main__':
    print(userData())

它现在应该工作。

答案 1 :(得分:0)

您缺少括号,因此请更改:

print(userData)

到此:

print(userData())

你会没事的。

答案 2 :(得分:0)

首先,你错过了函数调用中的括号,所以它应该是这样的:

print(userData())

然后,为了让程序不断要求用户输入,你应该使用循环来做到这一点:

def userData():
    while True:
        userKey = ["name ","age ","gender "]
        userValue = [input("name "),input("age "),input("gender ")]
        userData = dict(zip(userKey, userValue))

要停止执行,请按Ctrl+C

然后,为了将其写入文件,请使用Python中的open()函数:

...
with open('/path/to/file.txt', 'w') as my_file:
    my_file.write('data')
...

答案 3 :(得分:0)

其他解决方案都不会有效,因为您必须返回来自您的功能。

def userData():
    userKey = ["name ","age ","gender "]
    userValue = [input("name "),input("age "),input("gender ")]
    data = dict(zip(userKey, userValue))
    return data

如果您希望能够添加多个用户,可以使用while循环执行此类操作:

if __name__ == '__main__':
    ask = True
    # Get user data
    userdata = userData()
    # Write description on first row (table header)
    with open("user.txt", 'w') as f:
        for key in userdata.keys():
            f.write(key + "\t")
        f.write("\n")

    while ask:
        # Append user data to text file
        with open("user.txt", 'a') as f:
            for data in userdata.values():
                f.write(data + "\t")
            f.write("\n")
        # Ask wheter you want to add a new user and check user input
        chk = True
        while chk:
            add = input("Add another user? [y]/n ")  # y is the default answer
            if not add or add=='y' or add=='yes':
                chk = False
                userdata = userData()
            elif add=='n' or add=='no':
                ask=False
                chk = False
            else:  # Prompt again if user entered an invalid string
                print("Please enter y or n")

在这里,我还要检查有效输入,您还需要在userData函数中执行此操作,以避免用户提交错误值(如字符串多年,性别无效或名称无效,例如包含数字)< / p>

答案 4 :(得分:0)

我想你可能想要那样做

def userData():
   userKey = ["name ","age ","gender "]
   userValue = [input("name "),input("age "),input("gender ")]
   userData = dict(zip(userKey, userValue))
   return userData
if __name__ == '__main__':
   print(userData())