基本Python:比较列表

时间:2016-10-17 19:12:28

标签: python function

到目前为止,这就是我的全部内容:

def anagram(str1, str2):

    print("String 1 : %s" %str1) 
    print("String 2 : %s" %str2)
    s1 = sorted(str1.lower()) 
    s2 = sorted(str2.lower())

    if s1 == s2:
       print("This is an anagram") 
       return True

def test_anagram():

    print( "\n** Testing example anagrams **\n")

    tests = [["dog", "cat"]]

    num_anagrams = 0

    for test in tests:
       answer = anagram(test[0] , test[1])
       print("For inputs " + test[0] + " and " + test[1] + " answer is: ", answer, end ="")
       if answer == test[0]:
          print("This test is correct")
          num_anagrams += 1

我不认为这是接近正确的。我希望它将实际结果与函数先前给出的结果进行比较,然后输出结果是否相同,“正确”或“不正确”,然后输出有多少测试对函数正常工作。我无法理解if语句。

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

当你真正只是传递str1个对象时,你正在处理str2str个函数,根据你的错误,这些对象不可调用(即不作为功​​能工作)。

您是否尝试接受输入?如果是这样,请使用str1 = input("String 1 : "),依此类推。

否则,如果您尝试格式化输出,请使用:

print("String 1 : {}".format(str1))

答案 1 :(得分:3)

根据我认为你想要做的事情修改了你的代码,并对改变的内容和原因进行了一些评论:

def anagrams(str1, str2):
    print("String 1 : %s" %str1) #you wanted to print it right this is how you can format the string with variables
    print("String 2 : %s" %str2) #you wanted to print it right this is how you can format the string with variables
    s1 = sorted(str1.lower()) #lower function call to remove the capital letters since it matters
    s2 = sorted(str2.lower()) #lower function call to remove the capital letters since it matters

    if s1 == s2:
        print("This is an anagram") # you don't call a bool value with parameter. You use print functions instead and then return True
        return True #you wanted to return True here right? 



anagrams("Cat", "Tac") # no need to assign variables to match parameter names

打印出来:

String 1 : Cat
String 2 : Tac
This is an anagram

我认为你错误地认为如何通过对字符串的变量赋值来打印出来的东西,我依旧记得一种语言与你正在做的语法具有相似的语法。

您的错误基本上是尝试像函数一样调用str对象。由于您使用了其他编程语言,我认为您应该知道该语句有什么问题

编辑:

def anagram(str1, str2):

    print("String 1 : %s" %str1) 
    print("String 2 : %s" %str2)
    s1 = sorted(str1.lower()) 
    s2 = sorted(str2.lower())

    if s1 == s2:
        print("This is an anagram") 
        return True

def test_anagram():

    print( "\n** Testing example anagrams **\n")

    tests = [["dog", "cat"],["tac","cat"],["dog","god"]]

    num_anagrams = 0

    for test in tests:
        answer = anagram(test[0] , test[1])
        print("For inputs " + test[0] + " and " + test[1] + " answer is: " + str(answer))
        if answer:
            print("This test is correct")
            num_anagrams += 1
    print(num_anagrams)

test_anagram()