我正在试着写一个程序来检查2个输入是否是字谜。我觉得这应该是相对容易的,但我似乎不能弄明白。我应该这样定义一个函数:
def isAnagram(s1, s2):到目前为止,我有这样的想法:
word1 = input("Enter a string: ")
word2 = input("Enter a second string: ")
def isAnagram(s1, s2):
s1 = word1.sort()
s2 = word2.sort()
if s1 == s2:
print("This is an anagram")
else:
print("This is not an anagram)
isAnagram()我想我不完全理解定义函数,所以如果你能解释一下发生了什么,那就太好了!
发布于 2013-11-13 10:56:23
您几乎正确地定义了该函数,但还存在一些问题。
首先,您请求s1和s2作为参数。那很好。现在使用这些值,而不是全局变量word1和word2。
其次,如果这些值是字符串,则不能对其调用sort,因为字符串没有sort方法。但是您可以在任何序列上调用sorted函数,甚至是字符串。
第三,有一个简单的拼写错误,在第二个print上缺少一个"。
返回一个True或False值,并将print放在函数之外可能会更好,但我们暂时不考虑这一点。
把这些放在一起,下面是一个工作函数:
def isAnagram(s1, s2):
s1 = sorted(s1)
s2 = sorted(s2)
if s1 == s2:
print("This is an anagram")
else:
print("This is not an anagram")但是现在,您还必须正确地调用该函数。您已经定义了接受两个参数s1和s2的函数。这意味着您需要使用两个参数调用该函数。
那么,你是从哪里得到这些论点的呢?好吧,你已经有了这些变量word1和word2,它们看起来就是你想要的。
因此,将最后一行更改为:
isAnagram(word1, word2)你就完事了。
发布于 2013-11-13 10:55:42
你寻找字谜的方法是完全合理的。对单词进行排序和比较是确定两个单词是否是另一个单词的字形变化的最简单方法。
然而,我认为你被函数参数的概念搞糊涂了。当您定义
foo(x1, x2)当调用foo时,预计会使用2个参数进行调用。你定义
anagram(s1, s2)但是永远不要为它提供s1和s2。参数列表不是您在函数中使用的变量名列表--您可以随意分配新的变量。相反,它是函数接受的输入列表。
因此,anagram()是不正确的。你需要给anagram(input1, input2)打电话。(假设您没有默认值,我将不再赘述。
def isAnagram(s1, s2):
sortedWord1 = sorted(s1) # s1 is word1! (sorted instead of sort, strings are immutable)
#what should you do here?
if sortedWord1 == sortedWord2:
print("This is an anagram")
else:
print("This is not an anagram") # you forgot a closing quote!
word1 = input("Enter a string: ")
word2 = input("Enter a second string: ")
isAnagram(word1, word2)我对你的代码做了很小的改动,这样它就可以做正确的事情。不过,我建议您在继续之前先多阅读一下functions。
就像数学中的函数一样!f(x)是有意义的,f虽然仍然有意义,但可能不是你想要的。
>>> isAnagram("anagram", "nagaram")
This is an an anagram
>>> isAnagram("anagram", "woohoo")
This is not an anagram
>>> isAnagram("a", "a")
This is an an anagram发布于 2013-11-13 10:55:51
您的想法是正确的,但是因为word1和word2是字符串,所以它们没有.sort()属性。您仍然可以对该字符串中的字母进行排序:
>>> w='hello'
>>> sorted(w)
['e', 'h', 'l', 'l', 'o']sorted()的结果是一个列表,我们可以将它转换回一个字符串,然后使用一个空字符串将它们连接起来:
>>> ''.join(sorted(w))
'ehllo'有了这些知识,你的程序可能看起来像这样:
word1 = input("Enter a string: ")
word2 = input("Enter a second string: ")
def isAnagram(s1, s2):
s1 = ''.join(sorted(word1))
s2 = ''.join(sorted(word2))
if s1 == s2:
print("This is an anagram")
else:
print("This is not an anagram")
isAnagram(word1, word2)https://stackoverflow.com/questions/19944214
复制相似问题