Найдите местоположение символа в алфавите и зашифруйте его - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу попросить пользователя ввести строку и связать каждую из его букв с ее числовой позицией в алфавите, чтобы она выглядела следующим образом:

EGG = 577

Вот мой код:

print "Quelle est votre nom?"
user_Name = gets.chomp
name = user_Name.split(%r{\s*})
alphabet = "abcdefghijklmnopqrstuvwxyz"
alphabet_Count = alphabet.split("")
name.each_char { |chr|  } do
  until { |chr| == alphabet_Count[i]}
      puts alphabet_Count[i]
  end
end

Я получаю сообщение об ошибке при запуске кода:

alphabet.rb:6: syntax error, unexpected keyword_do, expecting end-of-input
name.each_char { |chr|  } do
                          ^~

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Код, написанный вами, неверен

Вы должны следовать либо do ... end, либо {}. Достаточно одного

Вот код без синтаксической ошибки

print "Quelle est votre nom?"
user_Name = gets.chomp
name = user_Name.split(%r{\s*})
alphabet = "abcdefghijklmnopqrstuvwxyz"
alphabet_Count = alphabet.split("")
name.each_char do |chr|
  until (chr == alphabet_Count[i])
      puts alphabet_Count[i]
  end
end
0 голосов
/ 13 сентября 2018

Чтобы получить индекс символа по алфавиту, вы можете использовать метод массива index , например:

alphabet_Count = ("a".."z").to_a
alphabet_Count.index(anychar.downcase)

Обратите внимание, что если вы используете метод index, буква 'a' будет проиндексирована как 0, поэтому вам придется добавить смещение значения 1. Кроме того, в вашем цикле действительно есть синтаксическая ошибка. Попробуйте это:

name.each_char do |chr|
  puts alphabet_Count.index(chr.downcase)
end

или это:

name.split('').each do |chr|
    puts alphabet_Count.index(chr.downcase)
end

В ruby, если вы выполняете итерацию, используя что-то вроде:

list.each do
    any_code_block
end

Это означает, что any_code_block будет выполнен один раз для каждого элемента в name. Поскольку в вашем случае вам нужно будет использовать element на каждой итерации, вам нужно указать имя переменной для получения значения element. Вы делаете это, используя |variable_receiving_element_value|.

...