Python打印无

时间:2015-04-10 02:26:24

标签: python variable-assignment definition

所以我完成了作业,但是最后一步是印刷品没有说明。这是我的代码

#Copy the definition of function print_chars below
def print_chars(multiples, char):
    print_chars= multiples* char
    print (print_chars)

#Copy the definition of function sum_arithmetic_seq below
def sum_arithmetic_seq(n):
    return n* (n+1)//2


#Copy the definition of function factorial below
import math
def factorial(n):
    return math.factorial(n)

#Here's my program
for N in range(1,7,1):
    print(N)
    print('sum:', print_chars(sum_arithmetic_seq(N) ,'*'))
    print('factorial:', print_chars(factorial(N),'#'))

输出会像这样结束(我只是将其中的一部分放在一边,因为它很长。)

1
*
sum: None
#
factorial: None

How it's supposed to be:
1
sum: *
factorial: #

2 个答案:

答案 0 :(得分:1)

Print_chars不会返回任何内容。让它返回您正在打印的内容,以便您可以使用它的输出。在您的上一次打印中,它无法使用该值,因为那里没有任何内容。更改打印以返回以修复它。

答案 1 :(得分:0)

工作解决方案:                
for N in range(1,7,1): print(N) print('sum:', end=" ") print_chars(sum_arithmetic_seq(N) ,'*')) print('factorial:', end=" ") print_chars(factorial(N),'#'))

非预期格式的原因:
问题是,你是print_chars函数已经在函数内部有一个print语句。这意味着什么,

当您拨打电话时,

print('sum:', print_chars(sum_arithmetic_seq(N) ,'*'))

将评估函数print_chars first将打印* {n次},然后在函数执行“Sum:”后打印。这就是为什么在“总和”之前打印开始*为了避免这种情况,


1.预先将print语句分为“sum”和“factorial”

 2.只需使用print_chars(.....)没有打印(print_char))然后您要求打印返回值。不归还的 3.或者只是更改函数内的print (print_chars) to a return(print_chars)