【问题标题】:My program never ends in while loop我的程序永远不会在 while 循环中结束
【发布时间】:2018-02-27 02:18:47
【问题描述】:

所以我试图让我的代码采用一个人想要的角色,并制作一个具有想要的基础的金字塔。但是当我执行程序时,输出永远不会结束,也不会输出任何字符。

这是以下代码:

pyramid = str()
charnum = int(1)
num2 = 0
num3 = 0
char = input("Input character to make pyramid: ")
numb = input("Input what the base number has to be: ")
if int(numb) % 2 != 0:
    numb2 = int(numb)
    numb2 = (int(numb2) - 1) / 2

while int(numb2) != -1:
    print(pyramid)
    pyramid = ("")
    numb3 = int(numb2)
    numb2 = int(numb2) - 1
    charnum2 = int(charnum)
    charnum = int(charnum) + 2

while int(numb3) != 0:
    pyramid += " "
    numb3 = int(numb3) - 1

while int(charnum2) != 0:
    pyramid += char
    charnum2 = int(charnum2) - 1

任何帮助将不胜感激

【问题讨论】:

  • 大部分int() 调用都不需要。要分配零,只需使用num2 = 0。 Python 是动态类型的,names 没有类型,你只需赋值即可。
  • 好的,谢谢,我现在编辑一下

标签: python-3.x while-loop


【解决方案1】:

在第三个 while 循环中,您正在检查 charnum2 的值,但从未修改它,您只修改 charnum。由于 charnum2 的值永远不会改变,如果它不是 0 以开始循环将永远运行。

编辑:在仔细查看您的代码之后,看起来您现在已经拥有了所有部分,只是您的问题代码的缩进被关闭了。如果您的实际源代码此时正在工作,那么您可以忽略这一点,但是看起来您应该缩进一些 while 循环,所以一切看起来像:

pyramid = str()
charnum = int(1)
num2 = 0
num3 = 0
char = input("Input character to make pyramid: ")
numb = input("Input what the base number has to be: ")
if int(numb) % 2 != 0:
    numb2 = int(numb)
    numb2 = (int(numb2) - 1) / 2

    while int(numb2) != -1:
        print(pyramid)
        pyramid = ("")
        numb3 = int(numb2)
        numb2 = int(numb2) - 1
        charnum2 = int(charnum)
        charnum = int(charnum) + 2

        while int(numb3) != 0:
            pyramid += " "
            numb3 = int(numb3) - 1

        while int(charnum2) != 0:
            pyramid += char
            charnum2 = int(charnum2) - 1

这样第一个while循环对金字塔的每一行运行一次,接下来的两个在金字塔中添加正确的字符。

【讨论】:

  • 好的,现在它给了我一个输出,但没有添加字符
  • 如果你发布的是你拥有的所有代码,那么在第一个 if 语句之后实际上没有任何东西可以打印出来。
  • 即使将其放入循环中,它似乎仍然可以输出任何内容
  • 同样在第一个 while 循环中,您要与 num2 进行比较,但在开始时不要将 num2 设置为 0 以外的任何值,这样循环只会运行一次。
  • @Stefan 如果您仍有问题,请查看我的编辑
猜你喜欢
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多