Этот раздел вот почему. У вас есть только одна переменная new_word, поэтому каждый раз, когда запускается l oop, она перезаписывает предыдущее значение. Единственное значение, которое не перезаписывается, является последним, и в итоге вы получаете одну строку.
for word in words:
new_word = word[1:] + word[0] + "ay"
say = "".join(new_word)
Вместо этого убедитесь, что каждое новое слово заканчивается в списке. ИМО, самый интуитивный способ сделать это - через понимание списка. Ниже вы можете отформатировать его для этого, но посмотрите, как это сделать. Серьезно, это пара минут вашего времени, и они станут одними из ваших лучших друзей, когда вы продолжите учиться. Вы также можете сделать то же самое со словарями.
pig_latin_text = [word[1:] + word[0] + "ay" for word in words]
say = " ".join(pig_latin)