【问题标题】:How do I skip a line of code if a condition is true?如果条件为真,我如何跳过一行代码?
【发布时间】:2019-10-18 04:52:23
【问题描述】:

当我输入一个不在 1 到 7 之间的数字时,它会显示“错误!请输入一个数字 (1-7) 代表星期几:”但是在输入某些内容后它会显示“输入一个数字(1-7) 星期几:"。我想要“错误!请为星期几输入一个数字(1-7):”当数字不在 1 之间时替换“输入一个数字(1-7)作为星期几:” -7 被输入。 我之前尝试过的只是将 print(error!) 放在 else 之后,但我不喜欢那个错误!出现在上面输入一个数字。有没有办法让它们出现在同一行?顺便说一句,我的教授要求我使用 if-elif-else 语句,并且代码是一个连续循环。

keep_going = 'y'
while keep_going == 'y':
    day = int(input('Enter a number (1-7) for the day of the week:'))
    if  day == 1:
        print('Monday')
    elif day == 2:
        print('Tuesday')
    elif day == 3:
        print('Wednesday')
    elif day == 4:
        print('Thursday')
    elif day == 5:
        print('Friday')
    elif day == 6:
        print('Saturday, Happy Weekend!')
    elif day == 7:
        print('Sunday, Happy Weekend!')
    else:
        int(input('Error! Please enter a number (1-7) for the day of the week:'))

【问题讨论】:

  • 我必须更改缩进才能在此站点上发布代码。
  • 以下任何答案都回答了您的问题吗?如果是这样,请标记最好的。

标签: python python-3.x


【解决方案1】:

您忘记了代码最后一行的赋值。 day 的值永远不会更新。

day = int(....

顺便说一句,您也永远不会更新 keep_going 的值。你的循环永远不会停止。最后,您应该使用日期名称列表并按索引访问名称,而不是使用 8 路 if 语句。

【讨论】:

    【解决方案2】:

    一些风格上的调整(我的意见我知道)并添加了day 的缺失变量分配和while 循环的退出条件。

    keep_going = True
    response = dict(zip(
        range(1,8), (
             'Monday',
             'Tuesday',
             'Wednesday',
             'Thursday',
             'Friday',
             'Saturday, Happy Weekend!',
             'Sunday, Happy Weekend!'
        )
    ))
    while keep_going:
        day = int(input('Enter a number (1-7) for the day of the week:'))
        if  day in response:
            print(response[day])
            keep_going = False
        else:
            day = int(input('Error! Please enter a number (1-7) for the day of the week:'))
    

    【讨论】:

      【解决方案3】:

      这是一个很好的方法,可以做你想做的事情,而不是一大堆 if-else 语句。它将使代码更简洁,更易于维护和更新。

      number = 1 
      num2 = 8 
      
      def check_number(num):
          if 0<num<8:
              print("ok number")
          else:
              print("Error")
      
      check_number(1)
      check_number(8)
      

      【讨论】:

        【解决方案4】:

        最好的解决办法就是把最后几行代码改成:

            else:
                print('Error! ', end='')
        

        然后控制流回到循环的开头,"Enter a number" 提示符将兼作错误解释和新数字提示符。

        这样您的表单将保持一致,以便所有 if 分支都执行 print 而不是其他任何事情。

        【讨论】:

        • 我确实尝试过这样做,但我不喜欢那个错误!上面出现了 Enter a number... 你知道如何让 Error 和 Enter a number 出现在同一行吗?
        • 编辑代码 (end='') 使其不会更改行,因此下一个打印语句在同一行继续。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        相关资源
        最近更新 更多