Код, предназначенный для цикла, однако он этого не делает

#python

#python

Вопрос:

Почему этот код не зацикливается?

 while True:
  for i in text:
    print (ord(i))
    print (i , "=" , chr (ord(i)  n))
    password = (password   chr (ord(i)   n))

  if (text.lower() != text):
    print ("only lower case.")

  elif (n<2 or n>15):
    print ("your code must be between 2 and 15, including them.")

    return False

  else:
    print(text ,  "=>"  , password)
 

Комментарии:

1. Пожалуйста, исправьте форматирование, чтобы сделать его более удобным для чтения

2. Я нигде не вижу здесь, где пользователю запрашивается дополнительная информация. Не могли бы вы более подробно объяснить, что вы ожидаете от этого кода?

Ответ №1:

Я не уверен в первоначальном вводе ваших кодов или ожидаемом выходе. Но, исходя только из формата вашего кода, ваши утверждения «if» выходят за рамки цикла While. Пожалуйста, посмотрите:

 while True:          
    for i in text:
        print (ord(i))
        print (i , "=" , chr (ord(i)  n))
        password = (password   chr (ord(i)   n))

if (text.lower() != text):
    print ("only lower case.")
elif (n<2 or n>15):
    print ("your code must be between 2 and 15, including them.")
    return False
else:
    print(text ,  "=>"  , password)
 

Это НЕ то же самое, что:

 while True:          
    for i in text:
        print (ord(i))
        print (i , "=" , chr (ord(i)  n))
        password = (password   chr (ord(i)   n))

    if (text.lower() != text):
        print ("only lower case.")
    elif (n<2 or n>15):
        print ("your code must be between 2 and 15, including them.")
        return False
    else:
        print(text ,  " => "  , password)
 

Также в вашем операторе ‘else’ я предполагаю, что это тот случай, когда ваш цикл While должен прерваться, поэтому я бы добавил ключевое слово ‘break’.