我需要一个代码,提示用户输入名称和数字,但最大值为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
答案 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)