我正在自学编程,使用Python作为我的首选武器。
我已经学到了一些基础知识,并决定为自己设置挑战,要求用户提供名称列表,将名称添加到列表中,然后最终将名称写入.csv
文件。
以下是我的代码。有用。
我的问题是你会采取哪些不同的方式,即如何提高这些代码的可读性和效率。你会不同地处理这种情况,以不同的方式构建它,调用不同的函数吗我很感兴趣,并且非常感谢来自更有经验的程序员的反馈。
特别是,我发现某些部分笨重;例如必须向用户指定数据输入所需的格式。但是,如果我只是简单地请求没有逗号的数据(名称年龄位置),那么当写入.csv
时,每条记录最终将作为每个单元格的一条记录(Excel) - 这不是所需的结果。
#Requesting user input.
guestNames = input("Please enter the names of your guests, one at a time.\n"\
"Once you have finished entering the information, please type the word \"Done\".\n"\
"Please enter your names in the following format (Name, Age, Location). ").capitalize()
guestList.append(guestNames)
while guestNames.lower() != "done".lower() :
guestNames = input("Please enter the name of your " + guestNumber[number] + " guest: ").capitalize()
guestList.append(guestNames)
number += 1
#Sorting the list.
guestList.sort()
guestList.remove("Done")
#Creating .csv file.
guestFile = open("guestList.csv","w")
guestFile.close()
#Writing to file.
for entries in guestList :
guestFile = open("guestList.csv","a")
guestFile.write(entries)
guestFile.write("\n")
guestFile.close()
答案 0 :(得分:0)
我试着写下你的要求:
首先,我强烈建议您阅读像Google Developer Tutorial这样的Python字符串操作和格式化教程。当您了解基本操作时,请查看official documentation以查看Python中可用的字符串处理方法。
编写代码的逻辑是正确的,但有两条无意义的行:
while guestNames.lower() != "done".lower()
没有必要降低“完成”,因为它已经是小写的。
for entries in guestList :
guestFile = open("guestList.csv","a")
在这里打开和关闭每个循环的questList.csv,这是无用且昂贵的。您可以在开头打开文件,然后使用for循环保存所有行,并在结尾处关闭它。
这是一个使用相同逻辑和不同输入格式的示例:
print('some notification at the beginning')
while true:
guestNames = input("Please enter the name of your " + guestNumber[number] + " guest: ").capitalize()
if guestNames == 'Done':
# Jump out of the loop if user says done
break
else:
# Assume user input 'name age location', replace all space with commas
guestList.append(guestNames.replace(' ', ','))
number += 1
guestList.sort()
# the with keyword will close the guestFile at the end
with open("guestList.csv","w") as guestFile:
guestFile.write('your headers\n')
for entries in guestList:
guestFile.write('%s\n' % entries)
请注意,有许多方法可以满足您的需求,具有不同的逻辑和方法。