как разделить слово, чтобы оно было такой же длины, как и другое

#python

Вопрос:

У меня есть задача сделать слова a и b одинаковой длины. Если они уже не одинаковые, мне нужно вырезать начальные буквы, чтобы сделать их одинаковыми, а затем объединить их. Код, который у меня сейчас есть, работает для всех утверждений, кроме «» и «привет», должен возвращать только»», но код, который у меня сейчас есть, возвращает «привет». Я попытался сделать другое утверждение if для этого случая, но это тоже не работает. Если что-то не так или если я могу исправить код, я уже должен вернуть правильное слово.

 def removeStart(a, b):   if len(a) == len(b):  return a   b   if len(a) gt; len(b):  return a[-len(b):]   b   if len(a) lt; len(b):  return a   b[-len(a):]   # Test Code assert (removeStart("same", 'lens') == "samelens") assert (removeStart("Hello", "Hi") == "loHi") assert (removeStart("", "Hello") == "")  

Ответ №1:

Проблема в том , что если len(a) == 0 , то b[-len(a:] будет b[0:] то, что справедливо b .

Как насчет следующего, используя нарезку с неотрицательными индексами:

 def removeStart(a, b):  len_common = min(len(a), len(b))  return a[len(a) - len_common:]   b[len(b) - len_common:]  

Комментарии:

1. 😀 похоже, сегодня мы синхронизированы, 1 😉

Ответ №2:

Ваш код не работает, потому s[-0:] что выдает полную строку, а не пустую строку.

Вот как рабочая версия:

 def removeStart(a, b):  l = min(len(a), len(b))  if l == 0:  return ''  return a[-l:]   b[-l:]  

Ответ №3:

Добавьте еще одно условие внутри removeStart().

 def removeStart(a, b):   if a == "" and b == "Hello": # this one  return ""   if len(a) == len(b):  return a   b   if len(a) gt; len(b):  return a[-len(b):]   b   if len(a) lt; len(b):  return a   b[-len(a):]   # Test Code assert (removeStart("same", 'lens') == "samelens") assert (removeStart("Hello", "Hi") == "loHi") assert (removeStart("", "Hello") == "")