Python 3.4.1 打印新行

6 投票
3 回答
59771 浏览
提问于 2025-04-18 18:45

我有个简单的问题,已经想了很久了。我正在写一段代码,这段代码可以接受输入的数字范围(一个高值和一个低值),然后用一个输入的数字来查找这个范围内是否有这个数字的倍数。接着,它会计算出奇数和偶数的总和,并统计它们的数量。我已经把所有的计算都做对了,但我遇到的问题是,无法把“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()

3 个回答

0

代码的输出结果

定义一个主函数:

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)

定义一个显示倍数的函数,参数有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)

调用主函数:

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)
7
print('\n', even_count, ' even numbers total to ', even_sum, sep='')

这样做就可以了。只需要在某个地方手动添加一个新行就行。

撰写回答