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

2024-10-08 18:22:51 发布

您现在位置: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语句包含在字符串中并键入时,它会继续,而不会打印“无效输入”(else)*这会在以后引起问题


Tags: 字符串falseinputifispackagesinteger语句
1条回答
网友
1楼 · 发布于 2024-10-08 18:22:51

这是因为您有两个独立的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检查整数,如果失败(即输入是字符串),那么我们点击第二个else。 如果成功,则检查packageCount!=0并成功或命中代码中的第一个

相关问题 更多 >

    热门问题