【问题标题】:why counter code add extra line every count?为什么计数器代码每次计数都添加额外的行?
【发布时间】:2020-05-18 06:45:34
【问题描述】:

这段代码有什么问题 每次向上或向下计数时都会添加额外的行 我该如何防止这种情况以及为什么会发生这种情况?

def counter(start, stop):
    x = start
    if start > stop:
        return_string = "Counting down: "
        while x >= stop:
            return_string += str(x)
            x = x-1 
            if start != stop:
                return_string += ","
            print(return_string)
    else:
        return_string = "Counting up: "
        while x <= stop:
            return_string += str(x)
            x = x + 1 
            if start != stop:
                return_string += ","
            print(return_string)
    return return_string

print(counter(1, 10)) # Should be "Counting up: 1,2,3,4,5,6,7,8,9,10"
print(counter(2, 1)) # Should be "Counting down: 2,1"
print(counter(5, 5)) # Should be "Counting up: 5"

【问题讨论】:

  • “每次向上或向下计数时添加额外的行”。每次循环打印。你看他们有关系吗?
  • 只需删除函数中的print 语句。您可能还想return return_string.rstrip(',') 修剪尾随逗号。

标签: python for-loop while-loop counter


【解决方案1】:
def counter(start, stop):
    x = start
    if start > stop:
        return_string = "Counting down: "
        while x >= stop:
            return_string += str(x)
            if x != stop:
                return_string += ","
            x = x - 1

    else:
        return_string = "Counting up: "
    while x <= stop:
        return_string += str(x)
        if x != stop:
            return_string += ","
        x = x + 1

    return return_string

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
【解决方案2】:

#这会起作用

def counter(start, stop):
    x = start
    if start > stop:
        return_string = "Counting down: "
        while x >= stop:
            return_string += str(x)
                if x != stop :
                    return_string += ","
                x = x - 1
        
    else:
         return_string = "Counting up: "
         while x <= stop:
             return_string += str(x)
             if x != stop:
                   return_string += ","
             x = x + 1
        
    return return_string

【讨论】:

    【解决方案3】:

    使用这个:

    def counter(start, stop):
    x = start
    if start > stop:
        return_string = "Counting down: "
        while x >= stop:
            return_string += str(x)
            x = x-1
            if x >= stop:
                return_string += ","
    else:
        return_string = "Counting up: "
        while x <= stop:
            return_string += str(x)
            x = x + 1
            if x <= stop:
                return_string += ","
    return return_string
    

    【讨论】:

      【解决方案4】:
      def counter(start, stop):
      x = start
      if start > stop:
          return_string = "Counting down: "
          while x >= stop:
              return_string += str(x)
              if x != stop :
                  return_string += ","
              x -= 1
      else:
          return_string = "Counting up: "
          while x <= stop:
              return_string += str(x)
              if x != stop:
                  return_string += ","
              x += 1
      return return_string
      
      print(counter(1, 10)) # Should be "Counting up: 1,2,3,4,5,6,7,8,9,10"
      print(counter(2, 1)) # Should be "Counting down: 2,1"
      print(counter(5, 5)) # Should be "Counting up: 5"
      

      【讨论】:

      • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
      【解决方案5】:

      您可以在此处使用此代码。 这将打印出不带逗号的结果。

      def counter(start, stop):
      x = start
      if x > stop:
          return_string = "Counting down: "
          while x >= stop:
              return_string += str(x)
              x = x-1
              if start != stop:
                  return_string += ","
                  return_string.rstrip(',')
      else:
          return_string = "Counting up: "
          while x <= stop:
              return_string += str(x)
              x = x + 1
              if start != stop:
                  return_string += ","
      return return_string.rstrip(',')
      

      【讨论】:

        【解决方案6】:

        这是一个:

        def counter(start, stop):
            x = start
            if start>stop:
        
                return_string = "\"Counting down: "
                while x >= stop:
                    return_string += str(x)
                    x=x-1
                    if x>=stop:
                        return_string += ","
                return_string += '"'
            else:
                return_string = "\"Counting up: "
                while x <= stop:
                    return_string += str(x)
                    x=x+1
                    if x<=stop:
                        return_string += ","
                return_string += '"'
            return return_string
        

        【讨论】:

          【解决方案7】:
          def counter(start, stop):
              x = start 
              if x>stop:
                  return_string = "Counting down: "
                  while x >= stop:
                      return_string += str(x) 
                  if x>stop:
                      return_string += "," 
                      x = x - 1
                  else:
                      return_string = "Counting up: " 
                      while x <= stop: 
                          return_string += str(x) 
                          if x<stop:
                              return_string += "," 
                              x = x + 1
                  return return_string
          

          【讨论】:

            【解决方案8】:

            使用这个:

            def counter(start, stop):
                x = start
                if start > stop:
                    return_string = "Counting down: "
                    while x >= stop:
                        return_string += str(x)
                        x = x-1
                        if start != stop:
                            return_string += ","
                    print(return_string)
                else:
                    return_string = "Counting up: "
                    while x <= stop:
                        return_string += str(x)
                        x = x + 1
                        if start != stop:
                            return_string += ","
                    print(return_string)
                return return_string
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-08-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-10-20
              • 2012-01-22
              相关资源
              最近更新 更多