三个草莓 发表于 2025-6-15 18:31:34

为什么打印空格

将九九乘法表倒过来打印:
>>> i = 1
>>> while i <= 9:
>>>   j = 9
>>>   while j >= i:
>>>         print(j, "*", i, "=", j * i, end=' ')
>>>         j -= 1
>>>   print()
>>>   i += 1

FishC 发表于 2025-6-15 18:32:49

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

### 修正后的代码:
i = 1
while i <= 9:# 添加条件
    j = 9
    while j >= i:
      print(j, "*", i, "=", j * i, end=' ')# end=' ' 是关键
      j -= 1
    print()# 换行
    i += 1

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2025-6-15 18:57:39

      哪个空格让你看着不爽了?

某一个“天” 发表于 2025-6-15 19:35:23

给个最佳{:10_256:}
i = 1
while i <= 9:
   j = 9
   while j >= i:
         print(str(j)+"*"+str(i)+"="+str(j * i),
         end='')
         j -= 1
   print()
   i += 1

三个草莓 发表于 2025-6-16 00:04:47

jackz007 发表于 2025-6-15 18:57
哪个空格让你看着不爽了?

第七行print()呀,为什么要写这个,为了每一行需要打印的结果后面是空的,不直接接上下一轮循环的结果吗

三个草莓 发表于 2025-6-16 00:05:15

某一个“天” 发表于 2025-6-15 19:35
给个最佳

答非所问呀大哥

ydwb 发表于 2025-6-16 06:52:53

print()# 换行

jackz007 发表于 2025-6-16 14:26:43

本帖最后由 jackz007 于 2025-6-16 14:33 编辑

三个草莓 发表于 2025-6-16 00:04
第七行print()呀,为什么要写这个,为了每一行需要打印的结果后面是空的,不直接接上下一轮循环的结果吗

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

某一个“天” 发表于 2025-6-16 19:53:34

三个草莓 发表于 2025-6-16 00:05
答非所问呀大哥

兄弟你开始没说明白{:10_266:}
页: [1]
查看完整版本: 为什么打印空格