Найти - Пользователи
Полная версия: Не могу вернуть значение из функции
Начало » Центр помощи » Не могу вернуть значение из функции
1 2
Johny_Jazzy
В чем суть,вот код:
def start(b):
print(“Добро пожаловать в игру кости!”)
a=str(input(“Выберите:Меньше,Больше,Равно”))
print(“Вы выбрали:”,a,“Вы уверены?”)
b=str(input())
return b
if b==“Нет” or b!=“Да”:
start()
Нужно создать игру кости, и важным условием является возможный выход игрока из игры.Тоесть при вопросе “Вы уверены?” можно было ответить “Нет” или каким другим словом, чтобы начать все заново.Так вот переменная b находится в функции.Я новичок и до конца не разобрался, как работает return.Она возвращает только значение в скобках?Тоесть вынести переменную b и использовать её в дальнейшем не выйдет или как?
py.user.next
Пример функций
  
>>> def f():
...     return 'cat'
... 
>>> def g():
...     return 'dog'
... 
>>> def k():
...     return f() + ' ' + g()
... 
>>> out = k()
>>> print(out)
cat dog
>>>
Johny_Jazzy

py.user.next
Пример функций
А в чем тогда проблема моего кода?
py.user.next
Johny_Jazzy
А в чем тогда проблема моего кода?
Ну, ты с чего-то взял, что возвращаемое значение функции имеет какое-то отношение к аргументу функции. Мой пример как раз показывает, что никакого аргумента даже близко нет в функции, а возвращаемое значение есть и работает.
Johny_Jazzy
py.user.next
Ладно,я убрал значение из аргумента функции и получилось так:
def start():
print(“Добро пожаловать в игру кости!”)
a=str(input(“Выберите:Меньше,Больше,Равно”))
print(“Вы выбрали:”,a,“Вы уверены?”)
b=str(input(“Ответ:”))
return b
if b==“Нет” or b!=“Да”:
start()
Но оно все еще не работает,тоесть как вынести значение b или а так ,чтобы его потом можно было использовать в коде.Как раз для того условия
py.user.next
  
>>> def start():
...     print('Добро пожаловать в игру кости!')
...     while True:
...         a = input('Выберите (Менье,Больше,Равно): ')
...         print('Вы выбрали:', a)
...         print('Вы уверены?')
...         b = input('Ответ (Да, Нет): ')
...         if b == 'Нет' or b != 'Да':
...             pass
...         else:
...             break
...     return a
... 
>>> def play():
...     result = start()
...     print('Выбран режим', result)
...     print('Запускаем игру для этого режима')
... 
>>> play()
Добро пожаловать в игру кости!
Выберите (Менье,Больше,Равно): Меньше
Вы выбрали: Меньше
Вы уверены?
Ответ (Да, Нет): Нет
Выберите (Менье,Больше,Равно): Больше
Вы выбрали: Больше
Вы уверены?
Ответ (Да, Нет): Да
Выбран режим Больше
Запускаем игру для этого режима
>>>
Johny_Jazzy
py.user.next
Спасибо! Единственное что, можешь прояснить некоторые моменты:
1)Зачем нужен цикл while?
2)Зачем в условии нам нужен pass и break.Т.к в теории,если пользователь жмет “Нет” или “блалплал”(любой ответ кроме “Да”) его должно кидать в самое начало.
3)Как тут работает break?
4)Зачем тут нужна функция play.
py.user.next
Johny_Jazzy
1)Зачем нужен цикл while?
Для того, чтобы повторять ввод, пока пользователь не введёт Да, обозначая свою уверенность.

Johny_Jazzy
2)Зачем в условии нам нужен pass и break.Т.к в теории,если пользователь жмет “Нет” или “блалплал”(любой ответ кроме “Да”) его должно кидать в самое начало.
Его кидает в самое начало цикла, если он не перешёл к break. Оператор pass означает “ничего не делать”.
Так функция start() приветствует его один раз, а запрашивает у него ввод любое число раз.

Johny_Jazzy
3)Как тут работает break?
Он относится к циклу while.

Johny_Jazzy
4)Зачем тут нужна функция play.
Функция play() вызывает несколько функций одну за другой. Игра делится на начало, продолжение и конец. Каждый из этих этапов должен быть оформлен в виде функции. У тебя есть только начало - функция start(). Тебе нужно дописать функцию продолжение и функцию конец. Тогда игра будет играть любое число раз, но при этом не будет каждый раз приветствовать пользователя или каждый раз с ним прощаться.
Johny_Jazzy
py.user.next
А если pass означает ничего не делать,то почему он кидает его в начало цикла?Так работает pass или как?А break означает выход из цикла,тоесть после ответа “Да” он возвращает a и идет дальше делать код?
Johny_Jazzy
py.user.next
import random
def start():
print('Добро пожаловать в игру кости!')
while True:
a = input('Выберите (Меньше,Больше,Равно): ‘)
print(’Вы выбрали:', a)
print('Вы уверены?')
b = input('Ответ (Да, Нет): ‘)
if b == ’Нет' or b != ‘Да’:
pass
else:
break
return a
def play():
result = start()
print('Выбран режим', result)
print('Запускаем игру для этого режима')
play()
dice_1=random.randint(1,6)
dice_2=random.randint(1,6)
print(“В первой кости выпало:”,dice_1)
print(“Во второй кости выпало:”,dice_2)
if a==“Равно”:
if dice_1+dice_2==7:
print(“Вы выйграли”)
if dice_1+dice_2>7 or dice_1+dice_2<7:
print(“Вы проиграли”)
elif a==“Меньше”:
if dice_1+dice_2<7:
print(“Вы выйграли”)
if dice_1+dice_2==7 or dice_1+dice_2>7:
print(“Вы проиграли”)
elif a==“Больше”:
if dice_1+dice_2>7:
print(“Вы выйграли”)
if dice_1+dice_2==7 or dice_1+dice_2<7:
print(“Вы проиграли”)
Я дописал алгоритм,но там выдает ошибку при a==“Меньше” или a==“Больше”,не понимаю тут в чем дело,переменную а мы же вернули из функции.Разве нет?Тип же у нее строковый вроде.
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