Python

Программа в python

Составить программу, которая запрашивает предложение и два слова, а затем заменяет первое слово на второе.

Как я поняла дано предложение, и если первое слово(которое мы ввели) есть в этом предложении, мы должны заменить его вторым введенным словом.

Пример:
Ввод:
На улице идёт снег
снег
дождь
Выход:
На улице идёт дождь

Я через isalpha нашла слова w=s[i:j], но не знаю как заменить слово на другое слово. Если это был бы список, то я имею представление, а так нет. Помогите пожалуйста.
Задачка-то малость посложнее, чем кажется на первый взгляд. Вряд ли тут возможно привести полноценную лингвистику с окончаниями, морфологией, славянизмами и выпадающими гласными ("день" - "дня", "дни", "дней"...). Но кое-какие простые случаи в программе предусмотреть всё-таки можно.
 import re
s, f, r = (input() for _ in range(3))
ws = re.split('(\W+)', s)

def copyMonoCase(s, t):
return t.upper() if s.isupper() else t.title() if s.istitle() else t.lower()

def copyMixedCase(s, t):
m = min(len(s), len(t))
return ''.join(copyMonoCase(s[min(i, m - 1)], t[i]) for i in range(len(t)))

print(''.join((copyMixedCase(w, r)) if i % 2 == 0 and w.lower() == f.lower() else w
for i, w in enumerate(ws)))
Чтобы не изобретать велосипед при разбиении фразы на слова, строим простенький лексический сканнер на регулярных выражениях.
 \W+    будет выделять нам слова по любым границам;
(\W+) будет выделять также и разделители, так что чётными элементами списка
станут слова, а нечётными - последовательности разделителей.
Дальше при пробеге по списку заменяем соответствующую поисковой строку на строку замены с копированием регистра исходной строки (см. пример). Разделители и строки, не совпадающие с поисковой, копируем, как есть. Потом результат склеиваем в одну строку.

Пример. Входные данные:
 На улице идёт снег! Снег, Карл! Срочно лепи снеговика, пока снег не закончился!   Это -- 0чень важно, СНеГ же.
снег
дождь
Вывод:
 На улице идёт дождь! Дождь, Карл! Срочно лепи снеговика, пока дождь не закончился!   Это -- 0чень важно, ДОжДЬ же. 

Видим, что слова корректно выделены, когда разделителями являются пробел, запятая, восклицательный знак. Слово "снеговик" не превратилось в "дождьовик", так как считается независимым словом (т.е. "энциклонги" нам не грозят). Регистр перенесён для слов с заглавной буквы, полностью в нижнем регистре и в смешанном регистре (если в заменяющем слове букв больше, чем в исходном то остаток ставится в регистр последней буквы исходного). Слово с цифрой и все разделители скопировались корректно (например, 3 пробела перед "Это" остались тремя пробелами, а не слились в один).

Разумеется, словоформы этот простенький код не разбирает, считая их независимыми словами. Для них нужно полноценное лингвистическое решение со словарём.
***** ******
***** ******
87 571
Лучший ответ
Разделить строку на список по ключу " ", найти индекс запрашиваемого элемента и заменить его на необходимый
Валерий Пиков
Валерий Пиков
37 506
 x = input().split(" ") 
one = input()
two = input()
index = 0

for y in x:
if(y == one):
x[index] = two
index+=1

print(*x)
***** ******
 как вы можете слушать эту какофонию
как
так
так вы можете слушать эту такофонию
Соломончик Красивый Спасибо! Я думала насчёт replace, но видимо не правильно ввела. Сейчас все работает
Соломончик Красивый Но если слово в предложении будет появляться в разных регистрах (с маленькой и с заглавной буквы), то как? replace уже не сработает. И да если это слово есть в составе другого, то оно заменится, как написано в комментарии выше
 sentence = input("Введите предложение: ") 
old_word = input("Введите слово, которое нужно заменить: ")
new_word = input("Введите слово, на которое нужно заменить: ")

# разбиваем предложение на слова
words = sentence.split()

# проходим по всем словам
for i in range(len(words)):
# если текущее слово соответствует old_word
if words[i].isalpha() and words[i].lower() == old_word.lower():
# заменяем его на new_word
words[i] = new_word

# склеиваем слова в предложение
new_sentence = ' '.join(words)

print("Новое предложение:", new_sentence)
Соломончик Красивый Программа работает, но регистр теряется при выводе
Соломончик Красивый Я тут ещё подумала, а если слово полностью будет капсом или большая маленькая буква по очереди. Тогда уже программа не будет сохранять регистр. Я понимаю, что это очень странные условия, но никто не отрицает, что предложение так могут ввести