使用有限的用户提示输入编写文件

时间:2017-12-25 14:30:25

标签: python-3.x

我需要一个代码,提示用户输入名称和数字,但最大值为3.然后它会将代码写入空文本文件,即使名称只有2或3。

name = True
while name:
    if name == "done entering":
        name = False
        break
    else:
        name = True
        firstName1 = input("Enter your first Name: ")
        lastName1 = input("Enter your last Name here: ")
        studentID1 = input("Enter your id number: ")
        firstName2 = input("Enter your first Name: ")
        lastName2 = input("Enter your last Name here: ")
        studentID2 = input("Enter your id number: ")
        firstName3 = input("Enter your first Name: ")
        lastName3 = input("Enter your last Name here: ")
        studentID3 = input("Enter your id number: ")
        break

inFile = open("studentInfo.txt", 'a')
inFile.write("Name: " + firstName1 + " " + lastName1)
inFile.write("\nStudentID: " + studentID1)
inFile.write("Name: " + firstName2 + " " + lastName2)
inFile.write("\nStudentID: " + studentID2)
inFile.write("Name: " + firstName3 + " " + lastName3)
inFile.write("\nStudentID: " + studentID3)
inFile.close()
print("\nDone! Data is saved in file: studentInfo.txt")

我复制粘贴了我的第一个代码并且它有点工作,但每当我在Python解释器中运行它时,在“输入名字”之前有一个“y”,我不能只输入2个名字,它要求3.我怎样才能缩短它... TY

1 个答案:

答案 0 :(得分:0)

我无法重现" y"在"输入名字"之前行为。也许是 在您的环境中复制和粘贴问题。

要输入少于3个条目,您需要限制为3并且可以 允许少于3.这可能需要不同的数据处理,如使用列表。

创建一个列表来存储3组条目。列表有长度,所以使用 作为while语句的列表长度。循环将在3组后结束 条目。

如果第一个名称条目为空,则从循环中断,因为这意味着不再存在 输入。如果其他项为空,则继续循环,以便用户可以重做该组。 在每个循环结束时将条目组附加到列表中。 如果愿意,可以改变这些中断或继续的条件。

当循环结束时,如果列表为空,则将脚本作为无操作结束。

可以使用for循环来编写文件。使用格式化的字符串,以便 组可以写成一个组。格式化允许进一步对齐等。

studentInfo = []

while len(studentInfo) < 3:
    firstName = input("Enter your first Name: ")
    if firstName == '':
        break
    lastName = input("Enter your last Name here: ")
    if firstName == '':
        continue
    studentID = input("Enter your id number: ")
    if studentID == '':
        continue

    studentInfo.append([firstName, lastName, studentID])
    print()

if not studentInfo:
    exit()

fileName = "studentInfo.txt"

inFile = open(fileName, 'a')
for firstName, lastName, studentID in studentInfo:
    inFile.write("Name: {} {}\n"
                 "StudentID: {}\n"
                 .format(firstName, lastName, studentID)
                 )
inFile.close()

print("Done! Data is saved in file: " + fileName)