#python #range
#python #диапазон
Вопрос:
ОБНОВЛЕНИЕ: Как мне проверить, что «upperInteger» действительно выше, чем «lowerInteger»?
Я хочу создать диапазон из пользовательского ввода и заставить его не только проверять правильность ввода, но и не позволять пользователю двигаться вперед, пока не будет получен приемлемый ввод. Я считаю, что следует использовать цикл while, но я не уверен, как реализовать его с неопределенным размером диапазона.
Код просто добавит простые числа внутри диапазона в список, который затем будет напечатан.
prime_range = []
try:
lowerInteger = int(input("Enter lower range limit: "))
upperInteger = int(input("Enter upper range limit: "))
except:
print("Invalid input. Please input an integer and try again.")
else:
for i in range(lowerInteger, (upperInteger 1)):
##Test if i is a prime number
primeflag = True
for j in range (2,i):
if(i % j == 0):
primeflag = False
break
if (primeflag == True):
prime_range.append(i)
print(prime_range)
Комментарии:
1. я думаю, что здесь нет необходимости использовать else part
2. Интересно. Итак, все, что мне нужно было бы сделать, это убрать «else» и удалить отступ из «for»?
3. да, например, зачем использовать else part, даже если вы знаете это с помощью while и try, за исключением того, что вы принимаете пользовательский ввод как int и обрабатываете эти входные данные, поэтому нет второго условия, о котором нужно позаботиться
Ответ №1:
Вы можете использовать логическую переменную, чтобы узнать, когда пользователь вставил допустимые значения:
prime_range = []
correct = False
while not correct:
try:
lowerInteger = int(input("Enter lower range limit: "))
upperInteger = int(input("Enter upper range limit: "))
correct = True
except:
print("Invalid input. Please input an integer and try again.")
else:
for i in range(lowerInteger, (upperInteger 1)):
##Test if i is a prime number
primeflag = True
for j in range(2, i):
if i % j == 0:
primeflag = False
break
if primeflag == True:
prime_range.append(i)
print(prime_range)
Ответ №2:
Вы на правильном пути с циклом while.
Чтобы упростить задачу, я бы выделил выборку входных данных как собственную функцию. В этой функции вы можете проверить все правила для входных данных.
def parse_inputs():
while True:
lower = input("Enter lower range limit: ")
if not lower.isnumeric():
print("lower range must be an integer. Please try again.")
continue
lower = int(lower)
upper = input("Enter upper range limit: ")
if not upper.isnumeric():
print("upper range must be an integer. Please try again.")
continue
upper = int(upper)
if upper < lower:
print("lower range must be less than upper range. Please try again.")
continue
return lower, upper
Теперь вы можете использовать это в своем цикле:
lower, upper = parse_inputs()
for i in range(lower, upper 1):
...