我想循环这个,每次循环我都想要+1所以它打印(1 2 3 ..直到无限)但是它打印2 1 2 1 2 ...我做错了什么?

I want to loop this, and everytime it loops I want +1 so it prints ( 1 2 3.. untill infinite) But it prints 2 1 2 1 2 ... what am I doing wrong?

我想循环这个,每次循环我都想要 +1 所以它打印( 1 2 3 4 5.. 直到无限) 但它打印 1 2 1 2 1 2 1 2 ... 我究竟做错了什么? 代码:

import time
x = 1

def main():
    print(x)    
    x + 1 
    time.sleep(1)
    print(x+1)
     
main()

main()

您可以使用迭代器。 通过使用 next() 你可以问它下一个数字是什么,它们只会在你真正需要它们时才计算出来。本例中的限制是 python-整数的系统大小。

import sys
maxSize = sys.maxsize

i = iter(range(maxSize))

def main():
    print(next(i))

main()
# 0

main()
# 1

main()
# 2

您的代码说 main 执行 -> 打印 1、2,睡眠,打印 2。

你应该做

x = 1
def main():
    while true:
        print(x)
        x += 1
        time.sleep(1)


main()

您的原始代码不会改变 x。 x += 1 表示 x = x + 1.

x + 1 就是 2。而且 2 不会存储在任何地方。要无限地继续下去,你只需留下 while true 循环 运行 并手动终止代码。尽管您可以对其设置一些上限,例如 1000 次循环。

这里的错误是每次调用函数 main() 时都会重新启动 x,因为没有循环。

def main():
x = 1
while True:
    print(x)
    time.sleep(1)
    x += 1

main()

当您在函数内部添加时 x+1 您没有将值存储回 x 以更新它。这是一个更好的实现。

import time

x = 1


def main():
    global x
    print(x)
    x += 1
    time.sleep(1)


while True:
    main()

希望这是最佳答案

import time #importing time

def infinitive_loop(): #define new function
    x = 1 #making variable x equals 1
    while True: #this is the loop
        yield x
        time.sleep(1)#wait 1 sec.
        x += 1#it increases one every time

for x in infinitive_loop():
    print(x)#print "x"