Распечатка списка с пунктами маркера после ввода пользователя (проблема с чатом) - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь создать простой чат-магазин кафе. Сначала спрашивается, какой напиток вы хотите, а затем хотите ли вы выпить еще. В конце сценария, если вы выбрали 3 напитка, я хочу, чтобы программа напечатала список напитков в пунктах с маркером, которому предшествует "print ('Хорошо, у меня есть:').

Это утилиты .py do c:

def print_message():
    print('I\'m sorry, I did not understand your selection. Please enter the corresponding letter for your response.')

def get_size():
    res = input('What size drink can I get for you? \n[a] Small \n[b] Medium \n[c] Large \n> ')

    if res == 'a':
        return 'small'
    elif res == 'b':
        return 'medium'
    elif res == 'c':
        return 'large'
    else:
        print_message()
        return get_size()
def order_latte():
    res = input('And what kind of milk for your latte? \n[a] 2% milk \n[b] Non-fat milk \n[c] Soy milk \n> ')

    if res == 'a':
        return 'latte'
    elif res == 'b':
        return 'non-fat latte'
    elif res == 'c':
        return 'soy latte'
    else:
        print_message()
        return order_latte()

И это основной код для чат-бота:

from utils import print_message, get_size, order_latte


def coffee_bot():
    print('Welcome to the cafe!')
    order_drink = 'y'
    drinks = []

    while order_drink == 'y':
        size = get_size()
        drink_type = get_drink_type()
        drink = f'{size} {drink_type}'
        print(f'Alright, that\'s a {drink}!')

        while True:
            order_drink = input('Would you like to order another drink? (y/n) \n> ')
            if order_drink in ['y', 'n']:
                break

        print('Okay, so I have:')
        for drink in drinks:
            print('-', drink)

    name = input('Can I get your name please? \n> ')
    print(f'Thanks, {name}! Your order will be ready shortly.')


def get_drink_type():
    res = input('What type of drink would you like? \n[a] Brewed Coffee \n[b] Mocha \n[c] Latte \n> ')

    if res == 'a':
        return 'brewed coffee'
    elif res == 'b':
        return order_mocha()
    elif res == 'c':
        return order_latte()
    else:
        print_message()
        return get_drink_type()


# Define new functions here!

def order_mocha():
    while True:
        res = input(
            'Would you like to try our limited-edition peppermint mocha? \n[a] Sure! \n[b] Maybe next time! \n> ')

        if res == 'a':
            return 'peppermint mocha'
        elif res == 'b':
            return 'mocha'

        print_message()


coffee_bot()

У кого-нибудь есть предложения, как решить эту проблему и, возможно, улучшить код?

Большое спасибо!

1 Ответ

0 голосов
/ 15 января 2020

Вы не добавляете в свой список, вы должны делать это при каждом вызове:

def coffee_bot():
    print('Welcome to the cafe!')
    order_drink = 'y'
    drinks = []

    while order_drink == 'y':
        size = get_size()
        drink_type = get_drink_type()
        drink = f'{size} {drink_type}'
        drinks.append(size) # added
        drinks.append(drink_type) # added

        print(f'Alright, that\'s a {drink}!')

        while True:
            order_drink = input('Would you like to order another drink? (y/n) \n> ')
            if order_drink in ['y', 'n']:
                break

        print('Okay, so I have:')
        for drink in drinks:
            print('-', drink)

    name = input('Can I get your name please? \n> ')
    print(f'Thanks, {name}! Your order will be ready shortly.')

вывод:

Okay, so I have:
- small
- brewed coffee
- small
- brewed coffee
- large
- latte
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...