Хотя цикл не заканчивается, несмотря на выполнение условий - PullRequest
0 голосов
/ 27 февраля 2019

Я структурировал код, чтобы выполнить простую задачу: ввести имя пользователя и пароль, проверить их соответствие условиям и либо повторить процесс, если они неверны, либо остановить программу, если она верна.Однако цикл while не остановится, и программа продолжит работу.Я вставил код ниже.Как заставить цикл while остановиться, когда условие выполнено?

def loginConfirmation(user1,user2,pass1,pass2,confirm1,confirm2): 
  if len(user1) > 6:                           
      confirm1 = confirm1 + 1
  else:
      print("Invalid username Player 1")
  if len(user2) > 6:
      confirm2 = confirm2 + 1
  else:
      print("Invalid username Player 2")
  if pass1 == ("password"):                     
      confirm1 = confirm1 + 1
    else:
      print("invalid passsword Player 1")
  if pass2 == ("password"):
      confirm2 = confirm2 + 1
  else:
      print("Invalid passsword Player 2")
  confirmation = confirm1 + confirm2
  return confirmation

confirmation = 0
confirm1 = 0
confirm2 = 0

while confirmation != 4:
     print("Please enter your details below. Usernames must be at least six letters long.")
     user1 = input("Player 1, enter your username: ")
     pass1 = input("Player 1, enter your password: ")
     user2 = input("Player 2, enter your username: ")
     pass2 = input("Player 2, enter your password: ")
     loginConfirmation (user1,user2,pass1,pass2,confirm1,confirm2)

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

вам просто нужно немного переставить код, попробуйте этот код:

confirmation = 0
while confirmation != 4:
    confirm1 = 0
    confirm2 = 0
    print("Please enter your details below. Usernames must be at least six letters long.")
    user1 = input("Player 1, enter your username: ")
    pass1 = input("Player 1, enter your password: ")
    user2 = input("Player 2, enter your username: ")
    pass2 = input("Player 2, enter your password: ")
    confirmation = loginConfirmation (user1,user2,pass1,pass2,confirm1,confirm2)

NB:

1 - две переменные подтвердите1 и подтвердите2 должны сбрасываться в ноль после каждого временизвонки

2 - вы должны присвоить выходное значение вашей функции loginConfirmation переменной подтверждения

0 голосов
/ 27 февраля 2019

Вам необходимо присвоить переменной confirmation возвращаемое значение вашей функции loginConfirmation, чтобы разорвать цикл while.

В данном коде значение вашей переменной confirmationвсегда равен 0, и поэтому условие прерывания вашего цикла while никогда не выполняется.

Обновите ваш код следующим образом:

def loginConfirmation(user1,user2,pass1,pass2,confirm1,confirm2): 
  if len(user1) > 6:                           
      confirm1 = confirm1 + 1
  else:
      print("Invalid username Player 1")
  if len(user2) > 6:
      confirm2 = confirm2 + 1
  else:
      print("Invalid username Player 2")
  if pass1 == ("password"):                     
      confirm1 = confirm1 + 1
    else:
      print("invalid passsword Player 1")
  if pass2 == ("password"):
      confirm2 = confirm2 + 1
  else:
      print("Invalid passsword Player 2")
  confirmation = confirm1 + confirm2
  return confirmation

confirmation = 0
confirm1 = 0
confirm2 = 0

while confirmation != 4:
     print("Please enter your details below. Usernames must be at least six letters long.")
     user1 = input("Player 1, enter your username: ")
     pass1 = input("Player 1, enter your password: ")
     user2 = input("Player 2, enter your username: ")
     pass2 = input("Player 2, enter your password: ")
     confirmation = loginConfirmation (user1,user2,pass1,pass2,confirm1,confirm2)
...