【问题标题】:Using nested if statements within a while loop (python)在while循环中使用嵌套的if语句(python)
【发布时间】:2020-09-03 08:40:14
【问题描述】:

这是我的代码:

#Greeting
print('\n---Sales Discount Calculator---\n')

#User Input
packageCount = input('Packages Purchased: ')

#To check whether packageCount is an integer or not
#loop continues until a positive integer is inputted
validInput = False

while (validInput == False):
    if (packageCount.isdigit()):
        packageCount = int(packageCount)
    if (packageCount != 0):
        validInput = True
        print(packageCount)
    else:
        print('Invalid Input. Try again...')
        packageCount = input('Packages Purchased: ')

我正在尝试查看来自用户的输入是否是正整数而不是零。我需要首先检查它是否是整数(第一个 if 语句),因为您无法将类型字符串与数字进行比较。如果它是一个整数,那么我需要检查它是否为零(第二个 if 语句)。当第二个 if 语句不存在时,代码会检查正整数以及它是否是字符串,但是当我包含第二个 if 语句并输入字符串时,它会继续运行而不打印“无效输入” (其他)。 *这会导致以后出现问题。

【问题讨论】:

  • 我很确定它与缩进有关。我尝试缩进第二个 if 语句,但它给了我一个错误:(

标签: python loops if-statement while-loop nested


【解决方案1】:

这是因为您有两个单独的 if-else 语句。因此,第一个检查数字,并将 packageCount 显式设置为 int,但是如果未命中,则 packageCount 将保留为字符串并继续进入下一个 if 语句

if (packageCount != 0):

我相信你可能想要缩进这个,这样你的代码就变成了:

#Greeting
print('\n---Sales Discount Calculator---\n')

#User Input
packageCount = input('Packages Purchased: ')

#To check whether packageCount is an integer or not
#loop continues until a positive integer is inputted
validInput = False

while (validInput == False):
    if (packageCount.isdigit()):
        packageCount = int(packageCount)
        if (packageCount != 0):
            validInput = True
            print(packageCount)
        else:
            print('Invalid Input. Try again...')
            packageCount = input('Packages Purchased: ')
    else:
        print('Invalid Input. Try again...')
        packageCount = input('Packages Purchased: ')

您会注意到您现在有重复的代码,但我会留给您删除 :)

---编辑---

我们添加的额外缩进确保了第二个 if-else 只有在第一个成功时才被调用。我添加新的 else in 的原因是为了维护错误消息和输入请求。 所以第一个 if 检查一个整数,如果失败(即输入是一个字符串),那么我们点击第二个 else。 如果成功,我们将检查 packageCount != 0 是否成功或点击代码中的第一个 else。

【讨论】:

    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 2013-08-18
    • 2020-06-22
    相关资源
    最近更新 更多