Напишите функцию delchar(s, c), которая принимает в качестве входных строк s и c

#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 . Итак, я также напечатал. Ок?