gpt4 book ai didi

python - 编写一个接受两个字符串并在 python 3 中返回 True 的函数

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:23 25 4
gpt4 key购买 nike

编写一个 python 函数 check_anagram(),它接受两个字符串并返回 True,如果一个字符串是另一个字符串的变位词。否则返回 False。

如果这两个字符串包含重复的字符但没有一个字符在同一位置重复,则认为这两个字符串是变位词。字符串的长度应该相同。

注意:在适用的情况下执行不区分大小写的比较。

这是我的代码:

def check_anagram(data1,data2):
first = data1.lower()
second = data2.lower()

d1 = []
d2 = []

for i in range(0, len(first)):
d1.append(first[i])
for i in range(0, len(second)):
d2.append(second[i])

for_check1 = sorted(d1)
for_check2 = sorted(d2)
if (for_check1 != for_check2):
return False

count = 0
if (len(d1) == len(d2)):
for i in d1:
for j in d2:
if(i == j):
a = d1.index(i)
b = d2.index(j)
if(a == b):
return False
else:
count += 1
if(count == len(first)):
return True
else:
return False

print(check_anagram("Schoolmaster", "Theclassroom"))

我得到的输出是“假”

虽然这个程序给出了字符串值的相关输出,比如 {silent, listen}{Moonstarrer, Astronomer}{apple, mango} 但不是上面的两个字符串(在代码中)

我在这段代码中遗漏了什么情况?这个东西怎么改?

最佳答案

您的函数可以简化为:

def check_anagram(data1, data2):
data1 = data1.lower()
data2 = data2.lower()
if sorted(data1) != sorted(data2):
return False
return all(data1[i] != data2[i] for i in range(len(data1)))

这实际上适用于您指定的情况。

关于python - 编写一个接受两个字符串并在 python 3 中返回 True 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55207979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com