当前位置: 首页 > 知识库问答 >
问题:

有人能告诉我为什么这个while循环在python中工作吗?[副本]

范鸿畅
2023-03-14
sum, Nr = 0, 12
i = Nr
while i:
    sum += i
    i -= 1
print ('The sum of all natural numbers up to (and inclusive of) ' + repr(Nr) +
' is ' + repr(sum))

这是Python3中一个非常简单的while循环,它会像预期的那样返回“12之前(包括12之后)的所有自然数之和为78”。

我感到困惑的是,为什么当“i”不受任何比较运算符约束时,这个条件“而i:”在这里起作用。

谢谢

共有3个答案

伊羽
2023-03-14

循环需要任何条件,无论是True还是False。当你写而i(假设i=5)时,它被评估为True,所以循环继续,但是当它遇到i=0时,它被评估为False循环中断。

徐正雅
2023-03-14

期待表达式,如果它是true则运行循环。

while stmt::=“while”expression:“suite[“else”“:“suite]

In [38]: bool(Nr)
Out[38]: True
闽鸿宝
2023-03-14

在条件语句中,输入隐式转换为布尔值,因此循环等效于

while bool(i):
    ...

bool(i)只要i!=0,如果i==0,则False,因此循环一直进行,直到i变为零。

 类似资料:
  • 我试图解决这个问题:第三个最大数量 但我犯了这个错误 第4行:Char 37:运行时错误:有符号整数溢出:-9223372036854775808-10不能在类型“long long”(solution.cpp)摘要中表示:UndefinedBehaviorSanitizer:undefined behavior prog_joined。cpp:13:37 这是我的代码 有人能告诉我这个错误到底意

  • 有人能告诉我这个错误是什么意思,这样我就可以避免它了吗?在此处输入图像描述

  • 我可以打印最大罚款,但我不能打印计数。我看不出max和count之间的区别,也看不出为什么它不让我打印count。感谢任何帮助

  • 我正在努力让Google Place API出现在CardView中。 我正在查看的特定代码来自GitHub,似乎适用于其他所有人,但我不明白为什么它会给我带来错误。 这是我遇到的错误: 主要的收获是,在对android类进行膨胀时出现了一个错误。碎片应用程序。FragmentContainerView,问题在XML的第50行。 这是XML: 所以我猜FragmentContainerView有问

  • 问题内容: boolean r = false ; int s = 0 ; while (r == false) ; { s = getInt() ; if (!(s>=0 && s<=2)) System.out.println (“try again not a valid response”) ; else r = true ; } 即使输入3或123,循环也不会终止,文本也不会显示。怎么了

  • 我想我的程序跳过了while循环,但我真的不确定到底发生了什么。该函数应该通过找到GCD,然后将分子和分母除以该数字来减少分数。 我得到分子和分母的绝对值,以确保如果分数是负数,我会在最后保持它。如果分子为0,则要求我返回(0,1)。问题是关于while循环。。。似乎它被完全跳过了。有什么建议吗?