将值从输入附加到Python

时间:2016-09-07 06:07:29

标签: python list append sublist

我正在尝试将输入中的值附加到列表中的子列表中。 每个学生和姓名的数量应该在子列表中。 例如:

[[123,John],[124,Andrew]]

外部列表将是学生人数和子列表,学生的信息..

以下是我的代码:

listStudents = [[] for _ in range(3)]
infoStudent = [[]]

while True:
    choice = int(input("1- Register Student 0- Exit"))
    cont = 0
    if choice == 1:
            snumber = str(input("Student number: "))
            infoStudent[cont].append(str(snumber))
            name = str(input("Name : "))
            infoStudent[cont].append(str(name))
            cont+=1
            listStudents.append(infoStudent)
    if choice == 0:
        print("END")
        break


print(listStudents)

print(infoStudent)

如果我第一次放置第一个循环snumber = 123name = johnsnumber = 124name = andrew,它会向我显示:[[123,john,124,andrew]] [[123,john], [124,andrew]]

2 个答案:

答案 0 :(得分:3)

您的代码可以大大简化:

  1. 您无需预先分配列表和子列表。只需拥有一个列表,并在接收输入时附加子列表。
  2. 您不需要将用户输入从input转换为字符串,因为它们已经是字符串。
  3. 以下是修改后的代码:

    listStudents = []
    
    while True:
        choice = int(input('1- Register Student 0- Exit'))
        if choice == 1:
            snumber = input('Student number: ')
            name = input('Name : ')
            listStudents.append([snumber, name])
        if choice == 0:
            print('END')
            break
    
    print(listStudents)
    

答案 1 :(得分:0)

您的代码可以更加pythonic,也可以使用一些基本的错误处理。在while循环中创建内部列表,并简单地附加到外部学生列表。这应该有用。

students = []
while True:
    try:
        choice = int(input("1- Register Student 0- Exit"))
    except ValueError:
        print("Invalid Option Entered")
        continue

    if choice not in (1, 9):
        print("Invalid Option Entered")
        continue

    if choice == 1:
        snumber = str(input("Student number: "))
        name = str(input("Name : "))
        students.append([snumber, name])
    elif choice == 0:
        print("END")
        break

print(students)