我正在编写这个函数来检测两个字符串是否为字谜。我想把字符串转换成小写字符,以防其中一个字符是大写的,但是我写的似乎不能正常工作。
# function to check if two strings areanagram or not
def eh_anagrama(cad1, cad2):
if cad1.islower() == False:
cad1.lower()
if cad2.islower() == False:
cad2.lower()
if(sorted(cad1)== sorted(cad2)):
print("The strings are anagrams.")
else:
print("The strings aren't anagrams.")
您不需要检查它们是否较低,因为它们无论如何都会以小写进行比较:
def eh_anagrama(cad1, cad2):
if sorted(cad1.lower()) == sorted(cad2.lower()):
print("The strings are anagrams.")
else:
print("The strings aren't anagrams.")
调用cad1.lower()
将此字符串转换为小写,但此值未使用,您可以尝试cad1 = cad1.lower()
编辑:而且,它更加"python化"。用if not cad1.islower()
代替if cad1.islower() == False
只是无条件转换,并且重新分配小写字符串(str
是不可变的,所以方法返回新字符串,它们不会改变调用它们的字符串):
def eh_anagrama(cad1, cad2):
cad1 = cad1.lower() # Reassign to replace with lowercased string
cad2 = cad2.lower() # Ditto
if sorted(cad1) == sorted(cad2):
print("The strings are anagrams.")
else:
print("The strings aren't anagrams.")
次要旁注:为了更正确地处理非英语字母,我建议使用.casefold()
而不是.lower()
;在其他语言中,这可以产生有意义的差异。
我做了一些改变。我没有直接写cad1.lower()
或cad2.lower()
,而是将它们赋值给对应值的变量。
cad1 = cad1.lower()
和cad2 = cad2.lower()
# function to check if two strings areanagram or not
def eh_anagrama(cad1, cad2):
cad1 = cad1.lower() ; cad2 = cad2.lower()
if sorted(cad1) == sorted(cad2):
print("The strings are anagrams.")
else:
print("The strings aren't anagrams.")