Решение на Първа задача от Александрина Каракехайова

Обратно към всички решения

Към профила на Александрина Каракехайова

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 8 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def convert_to_bgn(price, currency)
result = case currency
when :usd then price * 1.7408
when :eur then price * 1.9557
when :gbp then price * 2.6415
when :bgn then price
end
result.round(2)
end
def compare_prices(price, currency, price_two, currency_two)
convert_to_bgn(price, currency) <=> convert_to_bgn(price_two, currency_two)
end

Лог от изпълнението

........

Finished in 0.00636 seconds
8 examples, 0 failures

История (2 версии и 1 коментар)

Александрина обнови решението на 11.10.2015 23:12 (преди около 9 години)

+def convert_to_bgn(price,currency)
+
+ if currency == :usd
+ (price*1.7408).round(2)
+ elsif currency == :eur
+ (price*1.9557).round(2)
+ elsif currency == :gbp
+ (price*2.6415).round(2)
+ elsif currency == :bgn
+ price.round(2)
+ end
+
+end
+
+def compare_prices(price,currency,price_two,currency_two)
+
+ if convert_to_bgn(price,currency)>convert_to_bgn(price_two,currency_two)
+ 1
+ elsif convert_to_bgn(price,currency)<convert_to_bgn(price_two,currency_two)
+ -1
+ else 0
+ end
+
+end

Здравей :)

Решението ти изглежда правилно от функционална гледна точка, но виждам доста стилови проблеми:

  • Погледни ръководството ни по стил :)
    • Използвай 2 празни места за отместване. Не табове и не 4 спейса. Настрой текстовия си редактор на спейсове, вместо табове - иначе, когато paste-неш кода тук, табовете ще се появят като 8 спейса.
    • Слагай празно мясно след запетаите и около операторите (в случая *, < и >).
    • Не слагай празни редове в началото и в края на методите.
  • Имаш доста повторение на (price * число).round(2). Опитай се да го изчистиш. Подсказвам, че всичко в Ruby е израз - дори и if и case. Тоест можеш да присвоиш резултата от if и case на променлива и да го използваш после. За пример може да разгледаш слайдовете от последната лекция. :)
  • В compare_prices нямаш нужда от условната конструкция. Погледни документацията за оператора <=>. :)

До понеделник в 17:30 можеш да обновяваш решението си колкото пъти решиш. Ако имаш въпроси за нещо - питай! :)

Александрина обнови решението на 12.10.2015 00:30 (преди около 9 години)

-def convert_to_bgn(price,currency)
-
- if currency == :usd
- (price*1.7408).round(2)
- elsif currency == :eur
- (price*1.9557).round(2)
- elsif currency == :gbp
- (price*2.6415).round(2)
- elsif currency == :bgn
- price.round(2)
- end
-
+def convert_to_bgn(price, currency)
+ result = case currency
+ when :usd then price * 1.7408
+ when :eur then price * 1.9557
+ when :gbp then price * 2.6415
+ when :bgn then price
+ end
+ result.round(2)
end
-def compare_prices(price,currency,price_two,currency_two)
-
- if convert_to_bgn(price,currency)>convert_to_bgn(price_two,currency_two)
- 1
- elsif convert_to_bgn(price,currency)<convert_to_bgn(price_two,currency_two)
- -1
- else 0
- end
-
+def compare_prices(price, currency, price_two, currency_two)
+ convert_to_bgn(price, currency) <=> convert_to_bgn(price_two, currency_two)
end