Возникли проблемы с питоном в то время как цикл и словарь - PullRequest
2 голосов
/ 11 ноября 2019

Я новичок в python, в то время как цикл и словарь.

Я хочу написать пример кода, который неоднократно запрашивает у пользователя ключ, за которым следует значение. Ключ и значение должны быть сохранены в словаре.

Он должен перестать запрашивать у пользователя ключи и значения, как только пользователь введет слово «Done» в качестве ключа, а затем «Done» в качестве значения. Можно предположить, что пользователь будет вводить только ключи строкового типа и значения строкового типа. Нам также не нужно беспокоиться о дублирующих ключах.

После того, как пользователь введет «Done» для значения и «Done» для ключа, образец кода должен затем запросить у пользователя один ключ поиска. Он распечатает значение этого ключа и завершит работу.

См. Ниже примеры ...

Пример

Ключ: Tu

Значение: вторник

Ключ: мы

Значение: среда

Ключ: Th

Значение: четверг

Ключ: Fr

Значение: Готово

Ключ: Sa

Значение: суббота

Ключ: Готово

Значение: Готово

Что бы вы хотели посмотреть? Fr

Готово

Мои коды (как это исправить?) :

a = input('Key: ')
b = input('Value: ')
dict = {a: b}
while a != 'Done' and b != 'Done':
        new_dict = {input('Key: '): input('Value: ')}
        dict.update(new_dict)
key = input('What would you like to look up?')
print(dict.get(key))

Ответы [ 3 ]

3 голосов
/ 11 ноября 2019

Я думаю, вам нужно:

d = {}
while True:
    k = input("key: ")
    v = input("value: ")
    d[k] = v
    if k=="Done" and v=="Done":
        break

x = input("What would you like to look up?")

print(d.get(x))
2 голосов
/ 11 ноября 2019

Вы можете использовать get в качестве условия для цикла while:

d = {}
while d.get('Done','') != 'Done':
    key = input('Key: ')
    val = input('Val: ')
    d[key] = val
print(d.get(input("What would you like to look up?:"),"Not present in Dict"))
print("Done")

Пример выполнения:

Key: Mo

Val: Monday

Key: Tue

Val: Tuesday

Key: Done

Val: Done

What would you like to look up?:Mo
Monday
Done
1 голос
/ 11 ноября 2019

Есть несколько вещей, которые нужно исправить:

  • Определить словарь:

    d = dict() OR d = {}
    
  • Установить ключ и значение:

    d[a] = b
    
  • Я не уверен, зачем вам нужен еще один while вложенный цикл.

В любом случае, вот пример того, как вы можете реализоватьвышеуказанные определения:

d = dict()
a = raw_input('Key: ')
b = raw_input('Value: ')
d[a] = b
while a != 'Done' and b != 'Done':
    a = raw_input('Key: ')
    b = raw_input('Value: ')
    d[a] = b

for k, v in d.iteritems():
    print k+":  " + v
...