#python #python-3.x #string
#python #python-3.x #строка
Вопрос:
Напишите функцию delchar(s, c), которая принимает в качестве входных строк s и c, где c имеет длину 1 (т. Е. Один символ), и возвращает строку, полученную путем удаления всех вхождений c в s . Если c имеет длину, отличную от 1, функция должна возвращать s .
Я пробовал этот код, но он печатается в разных строках. Я хочу в одну строку. Каким должен быть алгоритм? Верен ли мой алгоритм?
def delchar(s,c):
if (len(c)==1):
for i in range(len(s)):
if (c is not s[i]):
print( s[i])
else:
continue
delchar('banana','n')
b
a
a
a
Но я хочу, чтобы вывод был в одной строке.
Комментарии:
1. вы
return
ничего не вводите из функции, выprint()
вводите ее, посмотрите, чтоreturn
означает функция. Создайте новый список внутри функции и поместите туда каждый соответствующий символ. После того, как вы закончите с итерацией по всей строке, объедините вновь созданный список вместе и используйтеreturn
, чтобы получить его обратно из функции. Когда вы перебираете строку, не используйтеlen(s)
, простоfor letter in s:
должно работать, оно дает вам непосредственно символ, который вам не нужно использоватьs[i]
для получения буквы2. Я добавил ответ, а также улучшил ваш код. Нет необходимости продолжать.
Ответ №1:
Написать:
print( s[i], end="")
вместо:
print( s[i])
На самом деле, когда вы используете print, по умолчанию добавляется разрыв строки, поэтому вам нужно использовать end=»» .
Полный код:
def delchar(s,c):
if len(c)==1:
for i in s:
if c!=i:
print(i,end="")
else:
print(s)
delchar('banana','n')
Комментарии:
1. Также обратите внимание, что вы пытаетесь напечатать not return . Итак, я также напечатал. Ок?