Python 3.4.1 如何打印新行?

6

我有一个问题,一直试图解决。我正在编写一段代码,它需要输入数字范围(高和低),然后使用输入的数字来查找该范围内的倍数。接着,它将计算所有奇数和偶数的总和并统计它们的数量。我已经成功地计算出了所有内容但我的问题是,我无法将"90 75 60 45 30"这一行与另一行"3 even numbers total to 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()

1
for num in range(x,y,-1): 循环之前添加一个 print() 调用。 - martineau
虽然它确实把我想要的行降下来了,但它也把数字部分堆叠在一起,对我来说就像是从一个煎锅跳到另一个煎锅。但还是谢谢你的回复。 - WillyJoe
3个回答

7
print('\n', even_count, ' even numbers total to ', even_sum, sep='')

应该这样做。只需手动在某个地方插入一个新行即可。

1
一个问题的最小化示例:

>>> 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(even_count, ...之间的任何位置,例如:

...
        odd_sum += number

print()
print(even_count, 'even numbers total to', even_sum)

不要将输出放在单独的行上。 - Padraic Cunningham
@PadraicCunningham 不要跟随,抱歉;这种方法 将会90 75 60 45 30 3 共有180个偶数 分成两行。 - jonrsharpe
@jonsharpe,它将所有内容都放在一行上,我的意思是使用print(even_count,'even numbers total to',even_sum,end=" "),除非我误解了您的意思。 - Padraic Cunningham
@PadraicCunningham 啊,也许不太清楚——print()位于for循环结束和print(even_count, ...之间。 - jonrsharpe
@johnsharpe,不需要end =“”,抱歉我没有遵循。 - Padraic Cunningham

0

代码输出

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)

定义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)

主函数()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接