鱼C论坛

 找回密码
 立即注册
查看: 105|回复: 8

[已解决]为什么打印空格

[复制链接]
发表于 前天 18:31 | 显示全部楼层 |阅读模式

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

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

x
将九九乘法表倒过来打印:
  1. >>> i = 1
  2. >>> while i <= 9:
  3. >>>     j = 9
  4. >>>     while j >= i:
  5. >>>         print(j, "*", i, "=", j * i, end=' ')
  6. >>>         j -= 1
  7. >>>     print()
  8. >>>     i += 1
复制代码
最佳答案
昨天 14:26
本帖最后由 jackz007 于 2025-6-16 14:33 编辑
三个草莓 发表于 2025-6-16 00:04
第七行print()呀,为什么要写这个,为了每一行需要打印的结果后面是空的,不直接接上下一轮循环的结果吗


        因为这一句
  1.          print(j, "*", i, "=", j * i, end=' ')
复制代码

        在每次打印完后都不会换行,这样,可以把属于同一行的内容连续输出到同一行上,那个 print() 的作用是在打印完一整行的内容后,打印一个换行符,以便准备在新的一行中打印下一行的内容。

程序实现如下

程序实现如下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 前天 18:32 | 显示全部楼层
您的代码目标是倒着打印九九乘法表(从9*1开始,逐行减少),但代码中有两处问题:  
1. `while i` 后面缺少条件(应为 `while i <= 9`)  
2. 缩进错误(`>>>` 后的空格需删除)

### 修正后的代码:
  1. i = 1
  2. while i <= 9:  # 添加条件
  3.     j = 9
  4.     while j >= i:
  5.         print(j, "*", i, "=", j * i, end=' ')  # end=' ' 是关键
  6.         j -= 1
  7.     print()  # 换行
  8.     i += 1
复制代码


### 为什么用 `end=' '` 打印空格?
1. **作用**:`end=' '` 让 `print()` 在输出后不换行,而是添加一个空格。这样同一行的多个等式(如 `9*1=9`、`8*1=8`)会显示在同一行,用空格分隔。  
2. **对比默认行为**:默认 `end='\n'`(换行),若去掉 `end=' '`,每个等式会单独占一行。  
3. **最终效果**:  
  
  1. 9*1=9 8*1=8 7*1=7 ...  
  2.    9*2=18 8*2=16 ...  
  3.    ...  
  4.    9*9=81
复制代码


### 对齐优化(可选)
如果输出参差不齐(因数字位数不同),可用格式化改进:
  1. i = 1
  2. while i <= 9:
  3.     j = 9
  4.     while j >= i:
  5.         # 每个等式占7个字符,右对齐
  6.         print(f"{j}*{i}={j*i:>2}", end=' ' * 2)  
  7.         j -= 1
  8.     print()
  9.     i += 1
复制代码

输出效果:  
`9*1= 9  8*1= 8  7*1= 7 ...`  

### 关键总结
- **空格**:由 `end=' '` 控制,用于分隔同一行的等式。  
- **换行**:由 `print()` 实现,结束当前行。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 18:57 | 显示全部楼层
        哪个空格让你看着不爽了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 19:35 | 显示全部楼层
给个最佳
  1. i = 1
  2. while i <= 9:
  3.      j = 9
  4.      while j >= i:
  5.          print(str(j)+"*"+str(i)+"="+str(j * i),
  6.          end='')
  7.          j -= 1
  8.      print()
  9.      i += 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 昨天 00:04 | 显示全部楼层
jackz007 发表于 2025-6-15 18:57
哪个空格让你看着不爽了?

第七行print()呀,为什么要写这个,为了每一行需要打印的结果后面是空的,不直接接上下一轮循环的结果吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 00:05 | 显示全部楼层

答非所问呀大哥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 06:52 | 显示全部楼层
print()  # 换行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 昨天 14:26 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2025-6-16 14:33 编辑
三个草莓 发表于 2025-6-16 00:04
第七行print()呀,为什么要写这个,为了每一行需要打印的结果后面是空的,不直接接上下一轮循环的结果吗


        因为这一句
  1.          print(j, "*", i, "=", j * i, end=' ')
复制代码

        在每次打印完后都不会换行,这样,可以把属于同一行的内容连续输出到同一行上,那个 print() 的作用是在打印完一整行的内容后,打印一个换行符,以便准备在新的一行中打印下一行的内容。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 19:53 | 显示全部楼层

兄弟你开始没说明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 14:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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