liujie6704 发表于 2021-3-27 01:50:34

关于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
不知这是如何实现的。

htyj0 发表于 2021-3-27 06:44:30

print("所有的水仙花数分别是:", end='')
这条语句是函数之外。如果只是调用Narcissus(),是执行不到这条语句的,而是只输出100-1000之间的所有水仙花数。

如果是F5直接运行py文件,应该会正常输出
“所有的水仙花数分别是:153      370      371      407” 。

paohhee 发表于 2021-3-27 08:59:09


#(函数)
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()

H原子 发表于 2021-3-27 12:03:03

问题一:
print("所有的水仙花数分别是:", end='')(2)
如果你水仙花数都没保存下来,那肯定打印不出来,上面print语句没有看到相关存储水仙花数的变量
问题二:
print("所有的水仙花数分别是:", end='')(2)
Narcissus()
按顺序执行会先执行打印语句在进行函数调用,应调整顺序,得先调用函数才能得到水仙花数并打印

liujie6704 发表于 2021-3-27 13:48:53

paohhee 发表于 2021-3-27 08:59


我的疑问是,该程序有两个打印语句,为何只出现一个打印结果。

一个菜人 发表于 2021-3-27 14:34:52

本帖最后由 一个菜人 于 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)——也不换行,所以执行结果就都在一行里面了
所在,其实是打印了多次的,只是结果都在同一行里

paohhee 发表于 2021-3-27 15:12:56

liujie6704 发表于 2021-3-27 13:48
我的疑问是,该程序有两个打印语句,为何只出现一个打印结果。

#(函数之外)
print("所有的水仙花数分别是:", end='')
Narcissus()

end=""代表不换行,其实是打印了两次的
这是print的默认参数:(这里的end="\n"代表换行)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
页: [1]
查看完整版本: 关于Print 问题