我正在尝试制作一个程序,用户可以输入联系人信息,然后将其存储在Google Sheets文档中。用户通过短语输入他们的输入:
def add_phone():
contact_phone = input("Please enter the contact's phone number: ")
我使用它来设置contact_phone变量,该变量由contact_phone = ''
在文档顶部定义。问题是,当我试图将这些信息发送到Google Sheets文档时
def store_info(contact_phone):
worksheet.append_row(contact_phone)
上面写着
Traceback (most recent call last):
File "/Users/user/PycharmProjects/contactList/main.py", line 46, in <module>
add_contact()
File "/Users/user/PycharmProjects/contactList/main.py", line 19, in add_contact
store_info()
TypeError: store_info() missing 7 required positional arguments: 'contact_fname', 'contact_lname', 'contact_phone', 'contact_email', 'contact_address', 'contact_birthday', and 'contact_notes'
正如你所看到的,我使用的变量不仅仅是contact_phone
,但同样的问题也适用于所有使用的变量(contact_fname、contact_lname等(我想知道在我完成这一步之前,是否有任何方法可以在不停止代码的情况下将变量从''
更新为输入的变量(电话号码(。
我曾尝试在用户(contact_phone = contact_phone)
输入输入后将变量设置为自己,但没有成功。
谷歌电子表格中似乎有7列。您需要传递列表中的所有7列。例如
worksheet.append_row(['contact_fname', 'contact_lname', contact_phone, 'contact_email', 'contact_address', 'contact_birthday', 'contact_notes'])
替换实际值。
如果只需要追加contact_phone,那么首先在行列表中获取详细信息,并追加行[3]=contact_phone。
我找到了答案。我首先在输入函数中定义全局变量:global contact_phone
(如用户所建议的:martineau(。
不过,这并没有解决我所有的问题。我有一个函数包含了所有步骤,包括输入函数和我的函数,该函数将信息发送/保存到Google Sheet文档。我意识到,直到函数完成,变量才会更新,所以我从主函数中删除了Google Sheets函数(读取输入的变量(,并在调用我的主函数后自行调用它
add_contact()
store_info()
这使得变量可以更新为用户在函数结束时输入的内容。然后,我的下一个函数(store_info
(将能够读取输入的变量,并将这些更新的变量发送到Google Sheet文档,允许它们是用户输入的任何变量感谢所有做出贡献的人