【问题标题】:How would you print number 1,2,3,4,5,6,7,8,18,19,20,21,22,23,24 in python?你将如何在 python 中打印数字 1,2,3,4,5,6,7,8,18,19,20,21,22,23,24?
【发布时间】:2026-01-29 21:25:02
【问题描述】:

我对 java 有一定的了解,所以我尝试在 for 块中写一个 if 块,

for i in range(25):
    if i == 9:
        i = 18
    print(i)

此代码逻辑在 java 中有效,但在 python 中无效。我该怎么办?

【问题讨论】:

  • for i in range(25) 生成一个值 i,范围从 0 到 24。它不能被修改,它每次都会改变。所以更喜欢使用while 循环并从外部初始化变量。
  • “我添加了括号以使其清晰”不要那样做... 将实际的 Python 代码编写为格式化文本。在任何情况下,这个 在 Java 中也不起作用,因为 Python for 循环等同于 java for-each 循环(即增强的 for 循环,也称为基于迭代器的循环)。如果你想要与类 C 的 java for 循环相同的东西,如果你想直接翻译它,你必须在 Python 中使用 while 循环。但是你应该使用基于 Python 的结构,不要只是将代码从 java 音译成 python
  • @KishanSingh 这里有一些关于:for loopwhile loop 的教程,如果你想检查语法。

标签: python python-3.x for-loop if-statement printf


【解决方案1】:

使用两个范围和itertools 的幂。

import itertools

for i in itertools.chain(range(1, 9), range(18,25)):
    print(i)

【讨论】:

    【解决方案2】:

    打印上述序列的更好方法是通过while循环:

    max_num = 25
    i = 1
    while i < max_num:
        if i == 9:
            print(18)
            i == 19
        else:
            print(i)
            i += 1
    

    【讨论】:

    • 注意不要使用 Python 已经定义的变量名。在这种情况下,您不能使用 Python max() 方法,因为您将其定义为 25。例如,您应该将其重命名为 max_
    【解决方案3】:

    使用 while 循环代替了工作

    i = 1
    while i < 25:
        if i == 9:
            i += 9
        print(i)
        i += 1
    

    输出

    1
    2
    3
    4
    5
    6
    7
    8
    18
    19
    20
    21
    22
    23
    24
    

    【讨论】:

    • 是的,这是正确的,但是如果我想在 8 点之后打印 19,我将不得不更改逻辑,不是吗,但我想要一些随机数。就像在java中我只需要写i = n,其中n是随机数,我不知道我是否让自己清楚。您的回答绝对正确,但我想要一些随机解决方案,与特定问题无关。我希望你能理解。无论如何感谢您的回复。
    【解决方案4】:

    使用两个循环

    for i in range(1, 9):
        print(i)
        
        
    for i in range(18,25):
        print(i)
    

    【讨论】: