Python 当循环不能正常工作时,我需要使用其他东西吗?

Python 当循环不能正常工作时,我需要使用其他东西吗?,python,Python,我需要一个比萨饼的大小,然后把它还给我。我正在使用while循环(不确定是否需要使用其他东西?),问题是,即使我输入了有效的选项,它也会提示我再次输入大小,而不是返回大小 def pizzaSize(): print("What size of pizza do you want\n (s)mall, (m)edium, or (l)arge?\n") size = input() while size != 'l' and size != 'm' and size != 's

我需要一个比萨饼的大小,然后把它还给我。我正在使用while循环(不确定是否需要使用其他东西?),问题是,即使我输入了有效的选项,它也会提示我再次输入大小,而不是返回大小

def pizzaSize():
   print("What size of pizza do you want\n (s)mall, (m)edium, or (l)arge?\n")
   size = input()
   while size != 'l' and size != 'm' and size != 's':
      print("ERROR invalid pizza size")
      size = input()
   return size`
我对这个很陌生,刚刚开始我的第一节编程课

编辑:

我相信引起我的问题的是另一段代码。我多次调用该函数并使其重复。现在我有一个单独的问题。如何在不调用前一个函数的情况下,获取前一个函数返回的内容并在后一个函数中使用它

def pizzaPrice():
if size == "s":
    cost = 9 + .50 * numTop
elif size == "m":
    cost = 11 + .75 * numTop
elif size == "l":
    cost = 13 + 1 * numTop
return cost

numTop是在前一个函数中返回的值。我如何在pizzaPrice函数中得到它?它说它没有定义,但当我将它定义为函数时,它会调用该函数。

您的代码对我来说运行良好。这可能有些过分,但您可以尝试使用以下代码。我对编程也很陌生,但我见过其他人在使用while循环时使用True和False。我希望这有帮助!祝你好运

**编辑我看到你发布了一个额外的问题,所以我希望这也有帮助。我不确定您是如何获得“numtop”数字的,但如果它是通过一个输入()获得的,比如比萨饼大小,那么请确保将其指定为浮点,因为您将使用它进行乘法运算(输入默认为字符串)。在pizzaPrice()函数中,需要指定size和numtop变量是numoftops()和pizzaSize()函数的结果

def numbofTops():


     numTop = float(input("how many toppings? "))
     return (numTop)


def pizzaSize():
    validAnswer = False
    print("What size of pizza do you want\n (s)mall, (m)edium, or (l)arge?\n")
    size = input("What size of pizza do you want\n (s)mall, (m)edium, or (l)arge?\n")

    while not validAnswer:
        if size != 'l' and size != 'm' and size != 's':
            print("ERROR invalid pizza size ")
            size = input()
        else:
            validAnswer = True

            return size


def pizzaPrice():
    numTop = numbofTops()
    size = pizzaSize()

    if size == "s":
        cost = 9 + .50 * numTop
        print(cost)

    elif size  == "m":
        cost = 11 + .75 * numTop
        print(cost)

    elif size  == "l":
        cost = 13 + 1 * numTop
        print(cost)
    return cost


pizzaPrice()

您需要调用函数
pizzaSize()
来获取值。在函数定义之外,调用它并将返回值保存在变量
size=pizzaSize()
中。我无法复制此函数。调用
pizzasicle()
并键入
s
将导致函数按预期返回。你有没有检查过当你意外地重复输入时
size
包含了什么内容?我不确定你的确切意思,布赖恩。我该怎么做?另外,我发现如果你用l、s或m多次回答它,它会引导你返回到与程序前面不同的函数,但是当你回答这个函数时,它会根据需要完成程序。不确定发生了什么。大多数代码,包括
pizzaSize
,都与问题无关。你需要提供一个新的解决方案。一旦你削减了,希望这个问题会很明显。提示:在
比萨饼价格中。顺便说一句,欢迎来到SO!查看和。你拿走了你剩下的难以看到的选择。在哪里/如何设置numTop的值?