Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

python TypeError: expected str, bytearray or other buffer compatible object ошибка в коде

Артём Матвеев Ученик (233), на голосовании 8 лет назад
решаю вот такую задачку http://acmp.ru/index.asp?main=task&id_task=504, в чем может быть проблема кода? Ошибка выше в строке a.replace(3,2)

fr=open('input.txt','r')
fw=open('output.txt', 'w')
d=int(fr.readline())
a='G''C''V'
b=0
while d:
b=b+1
if d!=b:
a.replace(3,2)
a.replace(1,2)
fw.write(a)
fw.close()
fr.close()
Дополнен 8 лет назад
ах да, забыл вместо d поставить k как в условии, это пока не значимо т. к. в интерпретаторе не выполняется сам код
Дополнен 8 лет назад
только вот еще есть проблема, в интерпретаторе тупо ничего не происходит, висит типо выполняется, если запускать через отладку то на первой строке пишет (2, 'No such file or directory', 'input.txt')["IOError: (2, 'No such file or directory', 'input.txt') (input и output лежат вместе с py файлом)
Голосование за лучший ответ
Shalafi Мудрец (15044) 8 лет назад
Попробуй в кавычки взять оба числа. Должно помочь.
Артём МатвеевУченик (233) 8 лет назад
ты про строку с replace? там тогда она ничего не делает и тупо висит на месте
Shalafi Мудрец (15044) Вроде бы реплэйс ток строку строкой заменяет. Ты в принципе можешь засунуть в массив или в три разных переменных каждую букву/число и менять стандартным методом.
Капитан Гугл Искусственный Интеллект (146199) 8 лет назад
a.replace(3,2) меняет 3 на 2 в a и возвращает новый массив. В a нет элемента 3 - это строка символов.
бред полный Гуру (2533) 8 лет назад
for _ in range(k):
__a.replace('V','C')
__a.replace('G','C')
print (' '.join(a))
Виктор К Мастер (2302) 8 лет назад
a.replace(3,2)
что вы пытаетесь добиться этим?
почитайте вообще про replace -
a.replace("X","Y") - заменить в строке все вхождения символа X на Y
a.replace("mama","papa") -аналогично, заменить все вхождения 'mama' на 'papa'

понятно что replace("2","3") ничего не делает, так как в строке GCV нет символа "2"

Применительно к задаче- советую работать со списком, а не строкой.
l = ['G','C','V']

напишите функцию swap(l,i,j)
def swap(l,i,j):
__l[i], l[j]=l[j], [i]

функция будет менять местами в списке l элементы с индексами i и j

поменяли местами цветы утром:
swap(l,1,2)
вечером
swap(l,0,1)
лексей дронин Мыслитель (5681) 8 лет назад
метод replace заменяет вхождение 'V', на C' а не меняет их местами. в итоге после выполнения цикла в строке будет все три одинаковых буквы. понятно что replace("2","3") ничего не делает, так как в строке GCV нет символа "2"
правильно написал Виктор К надо работать с списком. если просто не заморачиваясь с функцией то как то так
a=['G','C','V']
k=5
for _ in range(k):
....a[2],a[1]=a[1],a[2]
....a[0],a[1]=a[1],a[0]
print (''.join(a))
Похожие вопросы