Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本Python:比较列表_Python_Function - Fatal编程技术网

基本Python:比较列表

基本Python:比较列表,python,function,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_

到目前为止,我只有这些:

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声明


谢谢你的帮助

您正在处理类似于
str1
str2
的函数,而实际上只是传递
str
对象,根据您的错误,这些对象是不可调用的(即不作为函数工作)

您正在尝试接受输入吗?如果是这样,请使用str1=input(“字符串1:”)等

否则,如果您试图格式化输出,请使用以下方法:

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

修复了基于我认为您希望执行的操作的代码,并对更改内容和原因发表了一些评论:

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()

语句
str1(“字符串1:”)
生成此错误。你想在那里做什么?做python官方教程的前两章:你也不需要在函数调用中输入变量名,使用
字谜(“Cat”,“Tac”)
看起来你只是想在排序前打印这两个字符串,如果是这样,就把这两行改成
打印(“字符串1:”,str1)
类似地,对于str2,我不认为它是输入,因为他是作为参数传入的,但谁知道需要OP.brilliant提供更多细节呢!这就澄清了。如果你不介意的话,最后一个问题是。我必须创建一个没有参数的函数来测试上述函数是否正常工作。我得到了以下代码:I'我被要求使用不同的字符串调用“anagram”函数,以测试它是否正常工作。该函数应以可读的格式打印它正在运行的测试以及是否通过测试,并报告通过的测试总数。如何获取不同的字符串?它们是否预先输入像上面这样的脚本?你只需要一个for循环和一个计数器,然后检查它是否返回true或false。我想我应该做一些使用任何类型的单词作为测试的事情。比如:tests=[[“dog”,“cat”]],但大约有5到6个单独的测试