Что может вызвать ошибку при работе программы?
#Вводится неизвестное кол-во строк, в них нужно перевернуть слова вокруг себя ( asd! -> dsa! ), а знаки препинания оставить на месте. 5 тестов. 4 - правильно, 1 - ошибка во время исполнения ( буквы только латинские )
import sys
def revwrd(w): # Ф-я переворота слова
rw = ''
nn = len(w)
for i in range(nn):
rw += w[nn - 1 - i]
return rw
def rev(sr): # Функция для выполнения задачи в 1 строке
wrd = '' # переменная, чтобы хранить буквы от знака до следующего знака
nsr = '' # переменная для преобразованной строки
for el in sr: # пройдёмся по каждому элементы строки
if 'a' <= el <= 'z' or 'A' <= el <= 'Z': # если элемент строки - добавляем в *слово*
wrd += el
else:
if wrd != '': # если элемент не буква, то если *слово* не пустое, перевернув, добавим его, иначе добавим элемент с которым работает ( Если не написано специально отдельный if, почему-то первый знак после слова не добавляется )
nsr += revwrd(wrd)
wrd = ''
if wrd == '':
nsr += str(el)
return nsr # возвращаем новую строку
s = [] # переменная для ввода текста
ns = [] # переменная для изменённого текста
n = 0 # переменная для счёта кол-ва строк
for line in sys.stdin.readlines(): # построчный ввод текста ( пока не встретим ctrl + D )
s.append(line) # прибавляем к переменной текста строку
n += 1
for i in range(n): # изменяем текст по строкам и сохраняем его в новой переменной
ns.append(rev(s[i]))
for i in range(n): # выводим изменённый текст
print(ns[i], end='')
Источник: Stack Overflow на русском