2016-08-11 14 views
-4

Мне нужна помощь в решении моего кода. Ниже питона кода 'продолжить' не работает должным образомПродолжить не работает должным образом

dicemp = {'12345':''} 
while(1): 
    choice = int(input("Please enter your choice\n")) 

    if (choice == 1): 
     empno = input("Enter employee number: ") 
     for i in dicemp.keys(): 
      if i == empno: 
       print("employee already exists in the database") 
       continue 
     print("Hello") 

Выход:

Пожалуйста, введите ваш выбор

Введите номер сотрудника: 12345

сотрудник уже существует в база данных

Hello

Так что для вышеуказанного кода, если я даю тому же сотруднику нет. 12345 он входит в блок и печатает сообщение «сотрудник уже существует в базе данных» после этого он должен продолжить с начала, но в этом случае он также печатает «привет».

+3

«hello» будет напечатан, когда цикл закончен. Цикл заканчивается, несмотря на то, что сотрудник уже существует в базе данных. – syntonym

+2

есть 2 петли. После того, как цикл 'for' завершен, он печатает Hello. 'continue' работает для вашего цикла' for', а не 'while' –

+0

Затем заявление о печати должно быть в цикле –

ответ

2

Ваш continue перемещает петлю for на следующую итерацию, которая бы все равно произошла. Если вам необходимо продолжить внешний цикл, вы можете сделать что-то вроде этого:

while True: 
    choice = int(input("Please enter your choice\n")) 

    if choice == 1: 
     empno = input("Enter employee number: ") 
     found = False 
     for i in dicemp: 
      if i == empno: 
       print("employee already exists in the database") 
       found = True 
       break 
     if found: 
      continue 
     print("Hello") 

Теперь continue находится вне цикла for, поэтому он будет продолжать внешнюю петлю.

Вы могли бы упростить это:

while True: 
    choice = int(input("Please enter your choice\n")) 
    if choice==1: 
     empno = input("Enter employee number: ") 
     if empno in dicemp: 
      print("employee already exists in the database") 
      continue 
     print("Hello") 

и избавиться от внутреннего контура полностью.

+0

Да! Я плохой. Я новичок в программировании, так много ошибок: P –

Смежные вопросы