Форум сайта python.su
Решаю задачу: Допустим, дана строка слов, разделенных пробелами. Необходимо найти в ней самое длинное слово и заменить в нем буквы ‘a’ на буквы ‘b’.
Сразу оговорюсь, что решить задачу самым простым и подходящим способом - такой задачи не стоит.
Старался максимально применить и извратить полученные знания на тему “Строки”.
Итак:
max_sl = "" vivod = "" # В этой части кода мы получаем строку, делаем ее списком и проверяем # какая строка в списке самая длинная с условием, что это строка из букв. vvod = input("Введите строку: ") spis_vvod = vvod.split() for x in spis_vvod: if len(x) > len(max_sl): if x.isalpha(): max_sl = (x) else: continue #А тут, собсвтенно, извращенно заменяются буквы и из списка #создается строка index = spis_vvod.index(max_sl) max_sl = max_sl.replace("a", "b") spis_vvod[index] = max_sl for y in range(len(spis_vvod)): vivod += "{0[y]}".format(spis_vvod) print(vivod)
Traceback (most recent call last): File "ex_3.py", line 20, in <module> vivod += "{0[y]}".format(spis_vvod) TypeError: list indices must be integers, not str
for y in range(len(spis_vvod)): print(y, type(y))
Введите строку: Katastrofa yo mayo 0 <class 'int'> 1 <class 'int'> 2 <class 'int'>
Отредактировано Vlad_Ki (Фев. 28, 2016 08:47:25)
Офлайн
"{0[y]}".format(spis_vvod)
"{0}".format(spis_vvod[y])
Офлайн
FirikДа. Очень хороший вариант, я его не увидел, но он работает. Спасибо большое! Но и мой тоже должен работать, хоть и конструкция, может, не совсем обыденная. Говорю так уверенно, потому что сам уже ей пользовался."{0[y]}".format(spis_vvod)
Странная конструкция какая то
Может вот так?"{0}".format(spis_vvod[y])
Отредактировано Vlad_Ki (Фев. 28, 2016 09:37:09)
Офлайн
Оговорюсь, что работала конструкция с константой в индексе, а не переменной.
Офлайн
Киньте пример рабочий, аж интересно стало
Офлайн
ну к примеру.
>>> x = ["строки", "индекса поля", "списка"] >>> "Вывод {0[0]} с учетом {0[1]} заданного {0[2]}".format(x) 'Вывод строки с учетом индекса поля заданного списка'
Офлайн
Firik
Это все есть в документации
Офлайн
Vlad_KiВсе правильно - пока она, как вы выразились, константа, а по сути явно заданное значение все хорошо - интерпретатор явно ее использует как вы и задали. В случае, как вы предполагали, когда вы передаете переменную - интерпретатор ее таковой не воспринимает, а читает то что в строке указано - символ “y”. Поэтому и не работает.
Оговорюсь, что работала конструкция с константой в индексе, а не переменной.
Офлайн