Правда пока l oop python - PullRequest
       0

Правда пока l oop python

0 голосов
/ 20 июня 2020

Я уже некоторое время пытаюсь понять это, и я не понимаю, почему истина, в то время как l oop не выходит, когда функция check() возвращает значение False и снова спрашивает input(i.e "enter input") и снова, но он завершается, когда оператор else функции func() возвращает значение False. Независимо от того, насколько я знаю, while l oop должен останавливаться или выходить, когда возвращаемое значение ложно, но здесь это не так. Я не собираюсь изменять код, но просто хотел бы понять концепцию этого. пожалуйста, помогите мне. Спасибо! заранее.

def check(num):

    if(num%2==0):
        return True
    else:
        return False

def func():

    temp=[str(i) for i in range(1,51)]
    while True:
        c=input("enter input: ")
        if c in temp:
            c=int(c)
            if check(c):
                print(c)
                break
        else:
            print("input invalid, enter only digits from 1 to 50")
            return False

Ответы [ 4 ]

1 голос
/ 20 июня 2020

Это, скорее всего, связано с тем, что while true l oop, используемое в функции fun c (), является локальным для этой функции, и поэтому, когда вы пытаетесь использовать другую функцию check (), чтобы фактически изменить значение, он не может этого сделать. Он сможет возвращать false или true только на некоторое время l oop, который включен в ту же функцию.

0 голосов
/ 20 июня 2020

Пустой возврат, который у вас есть, на самом деле ничего не делает.

Вам нужно будет break из l oop.

Он работает во втором случае, как вы на самом деле возвращает значение вроде False

0 голосов
/ 20 июня 2020

Вы можете попробовать это сделать:

loop = True

def check(num):
  global loop
  if(num%2==0):
    loop = False
  else:
    loop = False

def func():
  global loop
  temp=[str(i) for i in range(1,51)]
  while loop:
    c=input("enter input: ")
    if c in temp:
        c=int(c)
        if check(c):
            print(c)
            loop = False 
    else:
        print("input invalid, enter only digits from 1 to 50")
        loop = False
0 голосов
/ 20 июня 2020

Чтобы выйти из al oop (для или во время) вне функции или выйти из функции, но только для выхода из l oop, вы должны использовать break вместо return.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...