while循环中未记录的变量

我的问题出在 # 行内。我不明白为什么 invalidDish 始终为 True,即使在 if 语句之一中将其设置为 False 后也是如此。


class dishes:

    def __init__(self, serial_no, dish_name, price):

        self.serial_no = serial_no

        self.dish_name = dish_name

        self.price = price


    def show_menu(self):

        print(str(self.serial_no) + '. ' + self.dish_name + '\t$' + self.price)


def errorMessage(code, range):

    if code == 'outOfRange':

        print('***Please enter number 1 - {} only***\n'.format(str(range)))

    machineRunning()


plain_prata = dishes(1, 'Plain prata', '0.50')

egg_prata = dishes(2, 'Egg prata', '1.00')

cheese_prata = dishes(3, 'Cheese prata', '2.50')

garlic_prata = dishes(4, 'Garlic prata', '1.50')

ham_prata = dishes(5, 'Ham prata', '2.50')


menu = [plain_prata, egg_prata, cheese_prata, garlic_prata, ham_prata]

current_order = []


def machineRunning():

    while True:

        print('1. Menu')

        print('2. Add order')

        print('3. Checkout')

        value = input('Please input:')

        try:

            value = int(value)

            if value < 1 or value > 3:

                errorMessage('outOfRange', 3)

        except ValueError:

            print('***Please enter number 1 - 3 only***\n')

            continue


        if value == 1:

            print()

            for x in range(len(menu)):

                menu[x].show_menu()

        elif value == 2:

            dish = input('Dish name/number:')

            try:

                dish = int(dish) - 1

                if dish < 0 or dish >= len(menu):

                    errorMessage('outOfRange', len(menu))


我尝试按照终端中的代码进行操作,但仍然无法找出问题所在。这是终端的结果。

附言。我正在通过尝试为一家餐厅制作收银机来学习Python,生成每周、每月总结、计算利润等。关于我下一步可以做什么以使这个更加用户友好有什么建议吗?就像 python 与其他软件或代码对话一样,使界面易于使用?


沧海一幻觉
浏览 73回答 1
1回答

慕沐林林

您将跳出 while 循环,然后使用外部 for 循环再次循环,然后将 invalidDish 设置为 True。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python