Я очень новичок в 2D-массивах в Python. Я пытаюсь создать 2D-массив, который просит пользователя ввести имя, а затем находит имя в массиве и распечатывает, в какой позиции это имя.
Мой код на данный момент:
pupil_name = [['Jess', 0], ['Tom', 1], ['Erik', 2]]
enter_pupil = input('Enter name of Pupil ')
print(str(pupil_name) + ' is sitting on chair number ' + str([]))
print(' ')
Возможно ли то, о чем я прошу? Это просто для удовольствия, и хотелось бы, чтобы это работало. заранее спасибо
Если вы все еще хотите использовать список списка, вы можете сделать это для ученика в ученике_имя: if ученик [0] == enter_pupil: print (ученик [1])






Вам нужен словарь.
>>> pupil_name = [['Jess', 0], ['Tom', 1], ['Erik', 2]]
>>> pupil_pos = dict(pupil_name)
>>>
>>> pupil_pos
{'Jess': 0, 'Erik': 2, 'Tom': 1}
>>> pupil_pos['Erik']
2
Это дает вам сопоставление имен с должностями, которые вы можете запросить, указав имя.
Как другие советовали в комментариях, вы должны использовать dict.
Вы также должны использовать сырой ввод вместо Вход, поскольку он преобразует ввод пользователя в str.
student_chair_numbers = {
'Jess': 0,
'Tom': 1,
'Erik': 2,
}
enter_pupil = raw_input('Enter name of Pupil ')
print(enter_pupil + ' is sitting on chair number ' + str(student_chair_numbers[enter_pupil]))
Вот решение, которое использует ваши вложенные списки. См. Ответ Джима Райта для решения dict.
pupil_name = [['Jess', 0], ['Tom', 1], ['Erik', 2]]
def find_chair(name, chair_numbers):
for (n, c) in chair_numbers:
if n == name:
return c
return None
enter_pupil = input('Enter name of Pupil ')
print(str(enter_pupil) + ' is sitting on chair number ' + str(find_chair(enter_pupil, pupil_name)))
print(' ')
Вы должны использовать словарь, как указывали другие. Однако, если вы все же хотите сохранить 2D-список, вот что вы можете сделать:
pupil_name = [['Jess', 0], ['Tom', 1], ['Erik', 2]]
enter_pupil = input('Enter name of Pupil ')
for pupil, seat in pupil_name:
if pupil == enter_pupil:
print('{} is seating at chair number {}'.format(pupil, seat))
break
else:
print('Not found: {}'.format(enter_pupil))
pupil_name, и каждая итерация назначает подсписок pupil и seat.else является интересным и уникальным аспектом цикла Python for: если мы перебрали все имена / места и не сломались (то есть не нашли имя), то выполняется код в соответствии с предложением else.
Вероятно, вы бы предпочли использовать словари для решения этой проблемы.