Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Ruby
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 85 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2018, 19:19   #1
AxBu
Пользователь
 
Регистрация: 10.02.2018
Сообщений: 13
По умолчанию Вывод данных в зависимости от введенного числа

Озадачился вопросом как сделать чтобы при введении определенного возраста отдавался соответствующий ответ, например в диапазоне от 1 до 15 программа отдавала ответ "Ты молод", запнулся на том как указать интервал, в документации нашел (1..15) и т.д. добавил в код

puts 'Hello, how old are you?'
age = gets.chomp.to_i
if age == 0
puts 'Are you idiot?'
end
if age == (1..15)
puts 'You are so little'
end
if age == (16..30)
puts 'You are so young'
end
if age == (31..60)
puts 'You are adult'
end
if age == (61..110)
puts 'You are old'
end

в итоге отдается ответ только при вводе "0"

у меня все в корне не правильно написано или ошибка в синтаксисе?
AxBu вне форума Ответить с цитированием
Старый 11.02.2018, 19:37   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

А почему это новорождённые младенцы — идиоты?
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 11.02.2018, 19:40   #3
AxBu
Пользователь
 
Регистрация: 10.02.2018
Сообщений: 13
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
А почему это новорождённые младенцы — идиоты?
Они не могут прочитать вопрос и ввести ответ, поэтому новорожденные младенцы под данную категорию не попадают)
AxBu вне форума Ответить с цитированием
Старый 11.02.2018, 23:20   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Если таки хотите через интервал, можно так:
Код:
if (1..15).member?(age)
Но мне кажется, лучше выписать неравенства
Код:
if 1 <= age && age <= 15
Black Fregat вне форума Ответить с цитированием
Старый 12.02.2018, 13:25   #5
AxBu
Пользователь
 
Регистрация: 10.02.2018
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Если таки хотите через интервал, можно так:
Код:
if (1..15).member?(age)
Но мне кажется, лучше выписать неравенства
Код:
if 1 <= age && age <= 15
cпасибо, первый способ мне пока более понятен
AxBu вне форума Ответить с цитированием
Старый 12.02.2018, 13:45   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от AxBu Посмотреть сообщение
первый способ мне пока более понятен
Скорее всего второй проверяет является ли age членом этого множества.

"?" это видимо какой-то синтаксический сахар для функций возвращающих boolean (true или false).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.02.2018 в 16:06.
Alex11223 вне форума Ответить с цитированием
Старый 12.02.2018, 15:48   #7
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
"?" это видимо какой-то синтаксический сахар для функций возвращающих boolean
Не сахар, а скорее соглашение об именах
Black Fregat вне форума Ответить с цитированием