微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在while循环中使用嵌套的if语句python

如何解决在while循环中使用嵌套的if语句python

这是我的代码

#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-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的原因是为了保持错误消息和输入请求。 因此,第一个if检查整数,如果失败(即输入是字符串),则我们击中第二个。 如果成功完成,我们将检查packageCount!= 0并成功或点击代码中的第一个。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。