【问题标题】:No output when using nested for loops inside if statements在 if 语句中使用嵌套 for 循环时没有输出
【发布时间】:2018-10-03 21:14:55
【问题描述】:

我正在尝试根据用户输入打印出一系列模式。但是,当我向其中添加 if 语句或 while 循环时,即使我选择了正确的数字,我也没有得到任何输出。如果我不向其中添加循环,这些模式就会起作用。我是 python 新手,不明白为什么它不打印任何东西。

num_draw = input("Please enter the number of the design you would like[1-6] or -1 to quit: ")

#while num_draw != -1:
if num_draw == 1:

    for i in range(0, 5):
        for j in range(0, i+1):
            print("* ",end="")
        print()
elif num_draw == 2:
#2
    size = 5
    isize = size - 2
    print ('*' * size)
    for i in range(isize):
        print ('*' + ' ' * isize + '*')
    print ('*' * size)

elif num_draw == 3:

    for i in range(5):
        for j in range(5):
            print(" *"[(j + i + 1)%2], end=' ')
        print()
elif num_draw == 4:

    for i in range(0, 5):
        for j in range(0, i+1):
            print("* ",end="")
        print()


elif num_draw == 5:
    for i in range(0, 5):
        for j in range(5, i, -1):
            print("@ ", end="")
        print()


elif num_draw == 6:
    k = 8
    for i in range(0, 5):
        for j in range(0, k):
            print(end=" ")
        k = k - 2
        for j in range(0, i+1):
            print("* ", end="")
        print()

【问题讨论】:

    标签: python for-loop if-statement nested


    【解决方案1】:

    你几乎是正确的。问题是键盘输入的类型总是str(默认为字符串),而您将其与int(整数)类型的数字进行比较。例如。如果您输入1,则输入num_draw='1',因此您检查的是if '1' == 1:,即False。同样,您的ifelif 都不是True,因为您将str 类型与int 类型进行比较。

    要使您的代码正常工作,请将您的输入类型转换为int,如下所示:

    num_draw = int(input("Please enter the number of the design you would like[1-6] or -1 to quit: "))
    

    输出

    Please enter the number of the design you would like[1-6] or -1 to quit: 
    
    1
    * 
    * * 
    * * * 
    * * * * 
    * * * * * 
    

    【讨论】:

      【解决方案2】:

      如前所述,您的 input 必须是 int 才能进行正确比较。至于您的 while 循环 while num_draw != -1: 是正确的,但您需要在循环内移动您的 input 提示,以便用户可以重新选择一个选项。设置num_draw = 'x'只是为了创建一个限定条件来启动循环

      num_draw = 'x'
      while num_draw != -1:
          num_draw = int(input("Please enter the number of the design you would like[1-6] or -1 to quit: "))
      

      【讨论】:

        猜你喜欢
        • 2020-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多