【问题标题】:Why new error appears at the next coding line when putting a comma at the end of a certain line?为什么在某行末尾加上逗号时,下一个编码行会出现新错误?
【发布时间】:2021-04-29 02:45:47
【问题描述】:

我对编码很陌生。我需要你的帮助。 我做了一个练习并遇到了错误。代码是这样的:

def isAnagram(s,t):  
    if len(s)!=len(t):        
        return False
    else:    
        list_t = sorted(list(set(t))
        list_s = sorted(list(set(s))
        if list_s != list_t:            
            return False
        else:
            i=0
            j=[]
            k=[]
            for i in range len(list_s):
                j.append(list_s.count(list_s[i]))
                k.append(list_t.count(list_t[i]))
                i=i+1
                if j!=k:
                    return False
                else:                      
                      return True

我得到了这个错误

 File "<ipython-input-43-5ac86c9b9c40>", line 7
    list_s = sorted(list(set(s))
    ^
SyntaxError: invalid syntax

如果我在第 5 行的末尾加上一个逗号,那么我会收到一个新错误:

 File "<ipython-input-44-6a66b63cb96e>", line 8
    if list_s != list_t:
                       ^
SyntaxError: invalid syntax

帮助我理解为什么我犯了这两个错误。

【问题讨论】:

  • 您没有正确关闭代码中的括号。 sorted(list(set(s 有三个开括号,你只用两个结束。当你添加逗号时,它会在括号内寻找另一条信息,它永远不会出现。

标签: python loops syntax


【解决方案1】:

你的代码基本上是:

(1

解析器正在寻找),但没有找到它,而是根据它找到的内容报告许多不同的错误。

【讨论】:

    【解决方案2】:

    您的代码中缺少括号:

    • 您没有关闭 sorted 的括号 - 它应该是 list_t = sorted(list(set(t))) 正如@Dan D. 提到的,您的程序正在寻找一个右括号。当它收到另一个字母时,它会返回一系列语法错误
    • range 是一个函数,所以你需要for i in range (len(list_s)):

    这段代码应该可以正确编译:

    def isAnagram(s,t):  
        if len(s)!=len(t):        
            return False
        else:    
            list_t = sorted(list(set(t))) # add missing parenthesis
            list_s = sorted(list(set(s))) # add missing parenthesis
            if list_s != list_t:            
                return False
            else:
                i=0
                j=[]
                k=[]
                for i in range(len(list_s)): # add missing parenthesis
                    j.append(list_s.count(list_s[i]))
                    k.append(list_t.count(list_t[i]))
                    i=i+1
                    if j!=k:
                        return False
                    else:                      
                        return True
                    
    

    【讨论】:

      【解决方案3】:

      **首先你错过了排序函数的')',其次你在范围函数上有空格,你错过了'()' **

      def isAnagram(s,t):
      
          if len(s)!=len(t):        
              return False
          else:    
              list_t = sorted(list(set(t)))
              list_s = sorted(list(set(s)))
              if list_s != list_t:            
                  return False
              else:
                  i = 0
                  j = []
                  k = []
                  for i in range(len(list_s)):
                      j.append(list_s.count(list_s[i]))
                      k.append(list_t.count(list_t[i]))
                      i=i+1
                      if j!=k:
                          return False
                      else:                      
                            return True
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-18
        • 2022-01-23
        相关资源
        最近更新 更多