Я использую Hash в Ruby, просто проверьте, находится ли определенное слово в классе «пар» и замените их. Сначала я код в python и хочу преобразовать его в ruby, с которым я не знаком. Вот код ruby, который я написал.Хэш в Ruby & Convert python to ruby
import sys
pairs = {'butter' => 'flies', 'cheese' => 'wheel', 'milk'=> 'expensive'}
for line in sys.stdin:
line_words = line.split(" ")
for word in line_words:
if word in pairs
line = line.gsub!(word, pairs[word])
puts line
Он показывает следующую ошибку
syntax error, unexpected kIN, expecting kTHEN or ':' or '\n' or ';'
if word in pairs
^
Хотя ниже оригинальный питон скрипт, который является правильным:
import sys
pairs = dict()
pairs = {'butter': 'flies', 'cheese': 'wheel', 'milk': 'expensive'}
for line in sys.stdin:
line = line.strip()
line_words = line.split(" ")
for word in line_words:
if word in pairs:
line = line.replace(word ,pairs[word])
print line
Является ли это из-за "импортными SYS" или «Отступ»?
Thanks kardeiz! Каков тип строки, которую Ruby «puts», это массив? Поскольку он печатает одно слово по строкам, мне интересно, разделили ли строки дважды. Если я все еще хочу выделить целую строку, что мне делать? line.join ("") не может решить проблему. – user2592038
Привет! Я нашел разницу, когда я помещал кавычки во входные данные. Например, когда я пытаюсь ввести «это масло», он печатает «это масло». Если это «это масло», выход будет «это мухи». В чем причина разницы? И когда я помещаю код на сервер, появляется ошибка под названием «неопределенный метод« map »для« this is butter »: String (NoMethodError)». – user2592038
Я немного изменил сценарий, чтобы вы могли передать строку, которая должна быть преобразована либо в виде последовательности аргументов, либо как одна (завернутая в кавычки): 'ARGV.join ('') .split ('')', которая объединяет arg массивом с пробелом, затем разбивается на пробелы. Я не уверен в вашей второй проблеме: каков контекст, в котором вызывается сценарий? Ваша ошибка указывает, что 'ARGV' интерпретируется как строка, но' ARGV' всегда должен быть массивом (даже если пустым). –