Читаем Учись программировать полностью

= = 4

numString

= numString + 'forty'

elsif write

= = 5

numString

= numString + 'fifty'

elsif write

= = 6

numString

= numString + 'sixty'

elsif write

= = 7

numString

= numString + 'seventy'

elsif write

= = 8

numString

= numString + 'eighty'

elsif write

= = 9

numString

= numString + 'ninety'

end

if left > 0

numString

= numString + '–'

end

end

write = left

# Сколько единиц осталось вывести?

left = 0

# Вычтем эти единицы.

if write > 0

if write

= = 1

numString

= numString + 'one'

elsif write

= = 2

numString

= numString + 'two'

elsif write

= = 3

numString

= numString + 'three'

elsif write

= = 4

numString

= numString + 'four'

elsif write ==

5

numString = numString + 'five'

elsif write ==

6

numString = numString + 'six'

elsif write ==

7

numString = numString + 'seven'

elsif write ==

8

numString = numString + 'eight'

elsif write ==

9

numString = numString + 'nine'

end

end

if

numString == '

'

# Только в одном случае «numString» может быть пустой -

# если «number

” равно 0.

return 'zero'

end

#

Если мы дошли

досюда, то у нас имеется число где-то

#

между 0 и 100,

поэтому нам нужно вернуть «numString».

numString

end

puts

englishNumber(

0)

puts

englishNumber(

9)

puts

englishNumber(

10)

puts

englishNumber(

11)

puts

englishNumber(

17)

puts

englishNumber(

32)

puts

englishNumber(

88)

puts

englishNumber(

99)

puts

englishNumber(100)

zero

nine

ten

eleven

seventeen

thirty-two

eighty-eight

ninety-nine

one hundred

И всё-таки, определённо имеется несколько моментов в этой программе, которые мне не нравятся. Во-первых, в ней слишком много повторений. Во-вторых, она не обрабатывает числа больше 100. В-третьих, в ней слишком много особых случаев, слишком много возвратов по return. Давайте используем несколько массивов и попробуем её немного подчистить:

def englishNumber number

if number < 0 # Без отрицательных чисел.

return 'Пожалуйста, введите неотрицательное число.'

end

if number == 0

return 'zero'

end

# Больше нет особых случаев! Больше нет возвратов по return!

numString = '' # Эту строку мы будем возвращать.

# единицы

onesPlace =['one', 'two', 'three', 'four', '

five',

'six', 'seven', 'eight', 'nine']

# десятки

tensPlace =['ten', 'twenty', 'thirty', 'forty',

'fifty',

'sixty', 'seventy', 'eighty', 'ninety']

teenagers =['eleven', 'twelve', 'thirteen', 'fourteen',

'fifteen',

# «left» – сколько от числа нам ещё осталось вывести.

# «write» – часть числа, которую мы выводим сейчас.

# write и left… поняли? :) left = number

write = left/ЮО # Сколько сотен осталось вывести?

left = left – write*100 # Вычтем эти сотни.

if write > О

# Вот здесь действительно хитрый фокус: hundreds = englishNumber write

numString = numString + hundreds + ' hundred'

# Это называется «рекурсия». Так что же я только что сделал?

# Я велел этому методу вызвать себя, но с параметром «write» вместо

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных