#python #string #substring
#python #строка #подстрока
Вопрос:
Это может быть вопрос для начинающих, но, похоже, я нигде не могу найти ответ
Как мне выполнить поиск и вернуть подстроку из другой строки, в которой символы расположены в другом порядке?
Когда я проверяю приведенный ниже код, кажется, что он дает правильный ответ, но я пытаюсь напечатать его, получая значение True или False, а также, когда я отправляю его, он говорит «Неверно. Ваша отправка не вернула правильный результат для ввода (‘UdaciousUdacitee’, ‘Udacity’). Ваше представление прошло 3 из 4 тестовых примеров: » …. Я в замешательстве .. и я обдумывал это в течение 3 часов или около того.
Спасибо
Test case 1: False
Test case 2: True
Test case 3: True
Test case 4: True
Точнее:
def fix_machine(debris, product):
if debris.find(product):
return product
else:
print("Give me something that's not useless next time.")
print "Test case 1: ", fix_machine('UdaciousUdacitee', 'Udacity') == "Give me something that's not useless next time."
print "Test case 2: ", fix_machine('buy me dat Unicorn', 'Udacity') == 'Udacity'
print "Test case 3: ", fix_machine('AEIOU and sometimes y... c', 'Udacity') == 'Udacity'
print "Test case 4: ", fix_machine('wsx0-=mttrhix', 't-shirt') == 't-shirt'
Комментарии:
1. Что вы пробовали до сих пор? Переполнение стека — не лучшее место, чтобы просить других людей написать ваш код за вас.
Ответ №1:
Вы правы print()
else
. Я думаю, вы хотели вернуть эту строку. (по крайней мере, в соответствии с вашим кодом утверждения)
Ответ №2:
Вы использовали str.find()
неправильно.
"It determines if string str occurs in string, or in a substring of string if starting index beg and ending index end are given."
Он будет учитывать порядок, который не является тем, что вы хотите. Измените свой fix_machine
на:
def fix_machine(debris, product):
charNumInDebris = dict()
charNumInProduct = dict()
for c in debris:
if c in charNumInDebris:
charNumInDebris[c] = 1
else:
charNumInDebris[c] = 1
for c in product:
if c in charNumInProduct:
charNumInProduct[c] = 1
else:
charNumInProduct[c] = 1
for c in charNumInProduct:
if not (c in charNumInDebris and charNumInDebris[c] >= charNumInProduct[c]):
return "Give me something that's not useless next time."
return product