Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我有一个无限的While循环?_Python - Fatal编程技术网

Python 为什么我有一个无限的While循环?

Python 为什么我有一个无限的While循环?,python,Python,我试图写一个基本循环,但我不明白为什么它会打印一个无限循环而不是-1到-24 net_distance = 0 def go_back(distance_backwards1): while net_distance != net_distance - distance_backwards1: net_distance = net_distance - 1 print(net_distance) go_back(24) 看起来您减少了错误的变量。此外

我试图写一个基本循环,但我不明白为什么它会打印一个无限循环而不是-1到-24

net_distance = 0

def go_back(distance_backwards1):
    while net_distance != net_distance - distance_backwards1:
        net_distance = net_distance - 1
        print(net_distance)

go_back(24)

看起来您减少了错误的变量。此外,您还需要在减少之前进行打印。您的while循环正在减少净距离,并且它一直处于负值,永远不会达到您传递的值。相反,您需要减小发送的值,使其达到净距离

对代码进行微小的调整,它会向后打印

net_distance = 0 #looks like you want to get here

def go_back(distance_backwards1):

    while net_distance != distance_backwards1: #check if you got to 0
        print(distance_backwards1) #print the number first
        distance_backwards1 = distance_backwards1 - 1 #decrement by 1

go_back(24)
输出将是:

24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1

while
循环中的条件

net_distance != net_distance - distance_backwards1
从两侧减去公共项净距离后,与

0 != -distance_backwards1:
0 != distance_backwards1:
i、 e.同

0 != -distance_backwards1:
0 != distance_backwards1:
这意味着如果函数的参数
distance\u backwards1
不为零,则条件仍然为
True
,因此
while
循环将是无限的。

def go_back(distance_backwards1):
    while distance_backwards1 > 1:
        distance_backwards1 = distance_backwards1 - 1
        print(-distance_backwards1)

go_back(24)
并不是说您不需要变量
net\u distance


您只需减少参数并在循环中打印其相反值(即其“减”值),仅由条件
净距离>1

控制。您知道范围是什么吗?因为24!=0看起来您在减去错误的变量。我想您需要减去距离1,同时打印相同的变量。请提供预期值。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。这也让我们可以在您的上下文中测试任何建议。最重要的是,请准确地解释当您跟踪此代码时,从您得到的输出中您不理解的内容。在你的MRE中包括那个痕迹。