Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 16, 2015 17:31:54

shakog
От: Спб
Зарегистрирован: 2015-06-24
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

Здравствуйте дорогие форумчане, хотелось бы учиться программировать правильно, но порой из-за недостатка знаний получается не очень красиво..
В общем, есть простая считалка, фактически демонстрация функции range(), начало, конец и интервал вводит пользователь, хотелось бы сделать проверку ввода(чтоб воспринимались только число)
Вот, что получилось:

print("Добро пожаловать в нашу считалку!")
start = ""
end = ""
rang = ""
while True:
    start = input("Введите начало: ")
    try:
         start = int(start)
         break
    except ValueError:
        print("Введите число!")
        continue 
while True:
    end = input("Введите конец: ")
    try:
         end = int(end)
         break
    except ValueError:
        print("Введите число!")
        continue 
while True:
    rang = input("Введите интервал: ")
    try:
         rang = int(rang)
         break
    except ValueError:
        print("Введите число!")
        continue 
for i in range(start, end, rang):
    print (i, end =" ")
Никак не могу понять, как всю эту картину сделать компактнее…

Офлайн

#2 Авг. 16, 2015 17:42:16

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

Так жить нельзя, сделайте же функцию, неужели вы не понимаете, что делаете одно и тоже три раза?



Офлайн

#3 Авг. 16, 2015 17:45:34

shakog
От: Спб
Зарегистрирован: 2015-06-24
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

В том то и дело: Я не совсем понимаю, как это сделать для разных значений ( в смысле начала, конца и интервала)

Офлайн

#4 Авг. 16, 2015 18:00:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

def input_value(title="Введите начало"):
    while True:
        try:
             return int( input("%s:" % title))
        except ValueError:
            print("Введите число!")
start = input_value()
end= input_value("Ведите конец")


Введите конец!



Отредактировано FishHook (Авг. 16, 2015 18:39:19)

Офлайн

#5 Авг. 16, 2015 18:22:18

shakog
От: Спб
Зарегистрирован: 2015-06-24
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

Спасибо!
Не подскажете еще, почему в моем неудачном примере, программа все время запрашивает ввод, если не подставить break перед except…

Офлайн

#6 Авг. 16, 2015 18:28:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

shakog
программа все время запрашивает ввод, если не подставить break перед except…
потому что цикл while никогда не заканчивается?



Офлайн

#7 Авг. 16, 2015 18:31:57

shakog
От: Спб
Зарегистрирован: 2015-06-24
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

Но в вашем же без break заканчивается..

Офлайн

#8 Авг. 16, 2015 18:38:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

shakog
Но в вашем же без break заканчивается..
но в моём есть return, вы его не видите?



Отредактировано FishHook (Авг. 16, 2015 18:39:47)

Офлайн

#9 Авг. 16, 2015 18:46:19

shakog
От: Спб
Зарегистрирован: 2015-06-24
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

Не знал, что этого достаточно для выхода из цикла

Офлайн

#10 Авг. 16, 2015 18:49:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Считалка с введением параметров (Быдлокод)

shakog
Не знал, что этого достаточно для выхода из цикла
То есть?
Из функции вышли, а цикл в ней продолжается? Вот это номер!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version