Найти - Пользователи
Полная версия: Не могу вернуть значение переменной из функции (совсем новичек)
Начало » Python для новичков » Не могу вернуть значение переменной из функции (совсем новичек)
1 2
axrbarsic
Никак не могу осилить почему функция не возвращает значение переменной “food”
Где я что то пропустил?
Singularity
Python3 ?
def market():
    yes = 'y'
    no = 'n'
    buy = input('вы хотите купить это? y/n ')
    if buy == yes:
        food = input('напишите количество ')
        food = food + (' штук купили')
        print(food)
    elif buy == no:
        food = ('')
        print('А жаль :-)')
    return food
buy = market()
print(buy)
axrbarsic
Да python3. Может все дело в неправильном построении функции?, не могу понять.
Be@r_Not_beer
def market():
buy = input('вы хотите купить это? yes / no ')
if buy == 'yes':
food = input('напишите количество ')
food = food + (' штук купили')
print(food)
elif buy == 'no':
food = ('')
print('А жаль :-)')
market()

а так мы сократили строки до минимума, может еще как нибудь сократить?
py.user.next
axrbarsic
Может все дело в неправильном построении функции?
второе сообщение прочитай

ещё поправил
def market():
    yes, no = 'yn'
    food = None
    buy = input('вы хотите купить это? y/n ')
    if buy == yes:
        food = input('напишите количество ')
        print(food + ' штук купили')
    elif buy == no:
        food = '0'
        print('А жаль :-)')
    return int(food)
 
def main():
    food = market()
    print(food)
 
main()

>>> def market():
...     yes, no = 'yn'
...     food = None
...     buy = input('вы хотите купить это? y/n ')
...     if buy == yes:
...         food = input('напишите количество ')
...         print(food + ' штук купили')
...     elif buy == no:
...         food = '0'
...         print('А жаль :-)')
...     return int(food)
... 
>>> def main():
...     food = market()
...     print(food)
... 
>>> main()
вы хотите купить это? y/n n
А жаль :-)
0
>>> main()
вы хотите купить это? y/n y
напишите количество 10
10 штук купили
10
>>>
axrbarsic
Спасибо за помощь теперь все работает! Я тоже чуть сократил код, но так и не понял почему при вызове функции надо использовать название переменной food “food = market()” а просто “market()” не работает.

def market():
    yes, no = ('yn')
    buy = input('вы хотите купить это? y/n ')
    if buy == yes:
        food = input('напишите количество ')
    elif buy == no:
        food = ('0')
        print('А жаль :-)')
    return (food + ' штук купили')
food = market()
print(food)
axrbarsic
Я ступил :-) Разобрался! Просто что бы вывести в print значение функции ее надо присвоить переменной, правильно я понял идею?
%имя переменной % = %имя функции%()
print(%имя переменной%)
axrbarsic
Ха, вот так тоже работает

def market():
    yes, no = ('yn')
    buy = input('вы хотите купить это? y/n ')
    if buy == yes:
        food = input('напишите количество ')
    elif buy == no:
        food = ('0')
        print('А жаль :-)')
    return (food + ' штук купили')
print(market())
py.user.next
не ставь скобки вокруг строк
axrbarsic
py.user.next
не ставь скобки вокруг строк
А в чем разница со скобками или без?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB