关于Print 问题
def Narcissus():for each in range(100, 1000):
temp = each
sum = 0
while temp:
sum = sum + (temp%10) ** 3
temp = temp // 10# 注意这里用地板除
if sum == each:
print(each, end='\t')(1)
print("所有的水仙花数分别是:", end='')(2)
Narcissus()
这个程序,在调用Narcissus()时,会打印一个水仙数,如(1),然后最后又会打印“所有的水仙花数分别是:”如(2)。但运行结果是只打印了一次。
所有的水仙花数分别是:153 370 371 407
不知这是如何实现的。 print("所有的水仙花数分别是:", end='')
这条语句是函数之外。如果只是调用Narcissus(),是执行不到这条语句的,而是只输出100-1000之间的所有水仙花数。
如果是F5直接运行py文件,应该会正常输出
“所有的水仙花数分别是:153 370 371 407” 。
#(函数)
def Narcissus():
for each in range(100, 1000):
temp = each
sum = 0
while temp:
sum = sum + (temp%10) ** 3
temp = temp // 10# 注意这里用地板除
if sum == each:
print(each, end='\t')(1)
#(函数之外)
print("所有的水仙花数分别是:", end='')(2)
Narcissus()
问题一:
print("所有的水仙花数分别是:", end='')(2)
如果你水仙花数都没保存下来,那肯定打印不出来,上面print语句没有看到相关存储水仙花数的变量
问题二:
print("所有的水仙花数分别是:", end='')(2)
Narcissus()
按顺序执行会先执行打印语句在进行函数调用,应调整顺序,得先调用函数才能得到水仙花数并打印 paohhee 发表于 2021-3-27 08:59
我的疑问是,该程序有两个打印语句,为何只出现一个打印结果。 本帖最后由 一个菜人 于 2021-3-27 14:37 编辑
liujie6704 发表于 2021-3-27 13:48
我的疑问是,该程序有两个打印语句,为何只出现一个打印结果。
print("所有的水仙花数分别是:", end='')
注意print的end参数值为'',因为end有默认值——'\n'(即换行,即打印完成之后换一行),所有我们也就习惯print是一行一行打印的,其实是可配置的。end值就是用于配置打印结束符的,而此处给end指定了值''(空字符串),所以不再换行了——继续沿着当前行打印结果。
同时,Narcissus函数里面的pritnt的end的参数值为'\t'(Tab)——也不换行,所以执行结果就都在一行里面了
所在,其实是打印了多次的,只是结果都在同一行里 liujie6704 发表于 2021-3-27 13:48
我的疑问是,该程序有两个打印语句,为何只出现一个打印结果。
#(函数之外)
print("所有的水仙花数分别是:", end='')
Narcissus()
end=""代表不换行,其实是打印了两次的
这是print的默认参数:(这里的end="\n"代表换行)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
页:
[1]