【问题标题】:Python 3.4.1 Print new linePython 3.4.1 打印新行
【发布时间】:2014-10-21 12:29:25
【问题描述】:

我有一个快速的问题,我一直在尝试弄清楚一段时间。我正在编写一个代码,该代码采用输入的数字范围(高和低),然后使用输入的数字来确定该范围内是否有该数字的倍数。然后它将奇数和偶数的总和相加,并加上有多少。我已经正确计算了所有内容,但我的问题是我无法将“90 75 60 45 30”行与另一行“3 个偶数总计为 180”分开。我确定这很简单,但我无法弄清楚。有人能指出我正确的方向吗?提前感谢您的时间和考虑。

以下代码返回:

Number of high range?: 100

Number of low range?: 20

Multiple to find?: 15

90 75 60 45 30 3 even numbers total to 180

2 odd numbers total to 120

代码:

def main():


    x = int(input('Number of high range?: '))
    y = int(input('Number of low range?: '))
    z = int(input('Multiple to find?: '))
    show_multiples(x,y,z)

def show_multiples(x,y,z):

    for a in range(x,y,-1):

        if a % z == 0:

            print (a,end=' ')

            even_count = 0
            even_sum = 0
            odd_count = 0
            odd_sum = 0
    for num in range(x,y,-1):
        if num % z == 0 and num % 2 == 0:
            even_count += 1
            even_sum += num
    for number in range(x,y,-1):
        if number % z == 0 and number % 2 == 1:
            odd_count += 1
            odd_sum += number

    print(even_count,'even numbers total to',even_sum)
    print(odd_count,'odd numbers total to',odd_sum)

main()

【问题讨论】:

  • 只需在for num in range(x,y,-1): 循环之前添加一个print() 调用。
  • 虽然它确实把线路带到了我想要的地方。它还将数字部分堆叠在一起,对我来说就像从一个煎锅跳到另一个煎锅一样。不过感谢您的回复。

标签: python function python-3.x printing sum


【解决方案1】:
print('\n', even_count, ' even numbers total to ', even_sum, sep='')

应该这样做。只需手动在某处插入新行

【讨论】:

    【解决方案2】:

    问题的最小示例:

    >>> def test1():
        for _ in range(3):
            print("foo", end=" ")
        print("bar")
    
    
    >>> test1()
    foo foo foo bar # still using end=" " from inside the loop
    

    一种解决方案的最小示例:

    >>> def test2():
        for _ in range(3):
            print("foo", end=" ")
        print() # empty print to get the default end="\n" back
        print("bar")
    
    
    >>> test2()
    foo foo foo 
    bar
    

    这个空的print 可以位于for 循环的末端之间的任何位置,您可以在其中print 单个数字和print(even_count, ...,例如:

    ...
            odd_sum += number
    
    print()
    print(even_count, 'even numbers total to', even_sum)
    

    【讨论】:

    • 这不会将输出放在单独的行上
    • @PadraicCunningham 不要关注,抱歉;这种方法90 75 60 45 30 3 even numbers total to 180 分成两行。
    • @jonsharpe,它把所有内容放在一行上,我的意思是使用print(even_count,'even numbers total to',even_sum,end=" "),除非我误解了你
    • @PadraicCunningham 啊,也许不清楚 - print() 位于 for 循环的末尾和 print(even_count, ... 之间。
    • @johnsharpe,所以不需要end = " ",抱歉我没有关注。
    【解决方案3】:

    Output for the code

    def main():

    x = int(input('Number of high range?: '))
    y = int(input('Number of low range?: '))
    z = int(input('Multiple to find?: '))
    print("The numbers are as follows:")
    show_multiples(x,y,z)
    

    def show_multiples(x,y,z):

    for a in range(x,y,-1):
    
        if a % z == 0:
            
            print (a,end=' ')
            even_count = 0
            even_sum = 0
            odd_count = 0
            odd_sum = 0
    for num in range(x,y,-1):
        if num % z == 0 and num % 2 == 0:
            even_count += 1
            even_sum += num
            
    for number in range(x,y,-1):
        if number % z == 0 and number % 2 == 1:
            odd_count += 1
            odd_sum += number
    print(' ')
    print(even_count,'even numbers total to',even_sum)
    print(odd_count,'odd numbers total to',odd_sum)
    

    main()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多