def can_spell_with(target_word, letter_word):
valid = True
target_word1 = [x.lower() for x in target_word]
letter_word1 = [x.lower() for x in letter_word]
for c in target_word1:
if c not in letter_word1:
valid = False
else:
valid = True
return valid
print(can_spell_with('elL','HEllo'))
# True
print(can_spell_with('ell','helo'))
# False
In the code above: I am trying to figure out how to return True if the letter_word contains the target_word.So 'ell' in 'helo' would return False
But 'ell' in 'hello' would return True
5 Réponses :
Essayez d'utiliser in :
def can_spell_with(a, b):
return (a.upper() in b.upper())
print(can_spell_with('Ell','HEllo'))
>>>True
print(can_spell_with('ell','helo'))
>>>False
Vous pouvez utiliser dans mais vous devez d'abord rendre les cas identiques:
def can_spell_with(target_word, letter_word):
return target_word.lower() in letter_word.lower()
Cela ne fonctionne pas avec le premier exemple. Lorsque vous faites print (can_spell_with ('Ell', 'HEllo')) , la sortie est False , quand elle est vraie.
Devrait être "can_spell_with (letter_word, target_word)" Cela fait "b in a" par opposition à "a in b"
Ouais @Michael, c'est ça le problème
Oh désolé, je vais réparer ça
Vous effectuez une recherche insensible à la casse. Pas besoin de faire une compréhension de liste. Utilisez simplement lower () ou upper () pour convertir tous les caractères en minuscules ou majuscules et utilisez dans :
import re
def can_spell_with(target_word, letter_word):
return re.search(target_word, letter_word, re.IGNORECASE) is not None
Vous pouvez également effectuer une recherche d'expression régulière insensible à la casse:
def can_spell_with(target_word, letter_word):
return target_word.lower() in letter_word.lower()
target_word = target_word.lower()
letter_word = letter_word.lower()
lenn = len(target_word)
valid = False
for i in range(len(letter_word)-lenn):
if letter_word[i:i+lenn] == target_word:
valid = True
return valid
Comment fonctionne cette partie: for i in range (len (letter_word) -lenn): if letter_word [i: i + lenn] == target_word: comment sait-il pour 'ell' et 'helo' que le second 'l' n'est-ce pas là dans «helo»? pour moi, il semble qu'il recherche e dans helo puis l dans helo puis l dans helo, ce qui s'avère être vrai
ceci vérifiera si mot1 dans mot2 indépendamment des minuscules ou des majuscules
def func(word1, word2):
first_char = word1[0]
for index, char in enumerate(word2):
if char==first_char:
if word2[index:len(word1)+1]==word1:
return True
return False
la casse des caractères est-elle importante, les majuscules ou les minuscules?
Est-ce que cela répond à votre question? Python a-t-il une méthode de sous-chaîne "contient"?
la capitalisation n'a pas d'importance et merci pour la suggestion, il y a pas mal de détails dans les explications là-bas merci