CiaraMc96 Ответов: 2

Python: как я могу получить два входных сигнала из цикла while?


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

Кроме того, есть ли способ сделать так, чтобы входу было присвоено значение, если введенное пользователем значение не входит в ограничения? Так же, как я пытаюсь получить ввод между 90 и 900, и если пользователь вводит 60, есть ли способ изменить его, чтобы ему было назначено 90?

Что я уже пробовал:

Это мой код до сих пор, понятия не имею, близко он или нет. Он получит входные данные для a и b, но будет применять только ограничения для получения b. этот код также не изменяет входные данные на 90, как мне бы хотелось, потому что я просто не знаю, как это сделать.

while True:
    try:
        a=int(input('Please enter a positive number for a:'))
        b=int(input('Please enter a positive number for b:'))
        while(b<90) or (b>900) and (a<90) or (a>900):
            
            print('This input is invalid. Please enter a positive number \
 that is greater than 90 and less than 900.')
            print('\a')
            
            #I tried putting a= like below but it then caused both inputs to not have the constraints
            b=int(input('Please type positive integer: '))
        break
    except ValueError:
        print('This input is invalid')
        print('\a')

Patrice T

Покажи свою работу.

2 Ответов

Рейтинг:
2

CiaraMc96

Это так здорово, спасибо! Но только для будущего обучения есть ли способ изменить цикл while, чтобы получить два входных сигнала с использованием одних и тех же ограничений? Или любой другой метод получения этих двух входных данных также будет работать?


phil.o

Пожалуйста, не публикуйте решение, чтобы ответить на чей-то ответ. Лучше использовать функцию "есть вопрос или комментарий?" кнопка на соответствующем решении. Кроме того, это вызовет уведомление Ричарда и даст ему знать о вашем беспокойстве.
Что касается вашего вопроса: Ричард дал вам точный способ действовать. С его решением вы переместите цикл while из основной функции в специализированный метод, ответственный за то, чтобы продолжать запрашивать один вход, пока он не станет действительным.

CiaraMc96

Извините, что я здесь новичок и не видел этого, так что спасибо, что дали мне знать. Однако мне интересно, как я могу получить эти два входа, не меняя их, как дал мне Ричард

Рейтинг:
16

Richard MacCutchan

Почему бы не создать функцию, которая получает любые входные данные между этими значениями и автоматически преобразует числа меньше 90? Что-то вроде:

def getinput(name):
    while True:
        try:
            value = int(input(f'Please enter a positive number for {name}: '))
            if value < 90:
                value = 90
            if value > 900:
                raise ValueError
        except ValueError:
                print('This input is invalid. Please enter a positive number between 90 and 900.\a')
        else:
            return value

Теперь вы можете написать что-то вроде:
a = getinput('a')
b = getinput('b')

что гораздо чище.


CiaraMc96

Это так здорово, спасибо! Но только для будущего обучения есть ли способ изменить цикл while, чтобы получить два входа, используя одни и те же ограничения, не меняя вход на 90? Или любой другой метод получения этих двух входных данных также будет работать?

Richard MacCutchan

Да, просто измените тесты так, чтобы они вызывали исключение, если значение находится за пределами заданных диапазонов:

if value < 90 or value > 900:
    raise ValueError