鱼C论坛

 找回密码
 立即注册
查看: 1796|回复: 6

[已解决]关于Print 问题

[复制链接]
发表于 2021-3-27 01:50:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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
不知这是如何实现的。
最佳答案
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)——也不换行,所以执行结果就都在一行里面了
所在,其实是打印了多次的,只是结果都在同一行里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-27 06:44:30 | 显示全部楼层
print("所有的水仙花数分别是:", end='')
这条语句是函数之外。如果只是调用Narcissus(),是执行不到这条语句的,而是只输出100-1000之间的所有水仙花数。

如果是F5直接运行py文件,应该会正常输出
“所有的水仙花数分别是:153        370        371        407” 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-27 12:03:03 | 显示全部楼层
问题一:
print("所有的水仙花数分别是:", end='')(2)
如果你水仙花数都没保存下来,那肯定打印不出来,上面print语句没有看到相关存储水仙花数的变量
问题二:
print("所有的水仙花数分别是:", end='')(2)
Narcissus()
按顺序执行会先执行打印语句在进行函数调用,应调整顺序,得先调用函数才能得到水仙花数并打印
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-27 13:48:53 | 显示全部楼层

我的疑问是,该程序有两个打印语句,为何只出现一个打印结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)——也不换行,所以执行结果就都在一行里面了
所在,其实是打印了多次的,只是结果都在同一行里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 05:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表