Он пробовал делать код, который печатал из-за экрана "супружеское будущее". Я использовал функцию random.randint, чтобы распределять случайную стоимость между 1 и 20 в r, y в зависимости от стоимости печать из-за экрана показала бы текст, соответствующий вышеупомянутой стоимости. Эта программа была бы должна бросать из-за экрана "Ты умираешь одиноким" если случайной стоимости r 1 или 2, также он был бы должен печатать "Возможно, когда ты выйдешь из бега" если случайной стоимости r 5 или 6, и я схватил с каждой случайной стоимостью r в ранге 1 20.
Код не помечает мне ошибку. Используя print после того, как ему была распределена стоимость в r я смог подтверждать, что да ему распределена случайная стоимость, но печать из-за экрана всегда дает мне "Ты Умираешь одиноким"... Я надеюсь, что это код и не судьба.
import random
def suerte(respuesta):
if respuesta == 1 or 2:
return print("Mueres solo")
elif respuesta == 3 or 4:
return print("Ella existe, pero tiene novio")
elif respuesta == 5 or 6:
return print("Tal vez, cuando salgas de carrera")
elif respuesta == 7 or 8:
return print("Ya la conoces, pero no te has animado")
elif respuesta == 9 or 10:
return print("Ella si te quiere, pero no le gusta tu forma de ser")
elif respuesta == 11 or 12:
return print("Ella está enfrente de tí")
elif respuesta == 13 or 14:
return print("Está fuera de tú nivel")
elif respuesta == 15 or 16:
return print("Olvidalo")
elif respuesta == 17 or 18:
print("Ya casi se te hace")
elif respuesta == 19 or 20:
return print("Se te va a aventar hoy")
r = int(random.randint(1, 20))
print("Tu destino dice que... ")
print (r)
f = suerte(r)
print(f)
Проблема - та comparaciГіn:
if respuesta == 1 or 2:
, что deberГ, - чтобы быть:
if respuesta == 1 or respuesta == 2:
и asГ - со всеми они demГЎs.
, Потому что, что tГє письменный habГ-эксперт - синтаксис vГЎlida, это не ошибка, sГіlo, что не делает того, что ты ждешь. Для python он как будто ты поместил:
if (respuesta == 1) or 2:
, что evalГєa следующей формы. Представь, что respuesta
стоит 8. В этом случае то, что estГЎ между parГ©ntesis serГ - в фальшивый, и следовательно для python она expresiГіn он равняется в:
if False or 2:
и это, несмотря на то, что она сможет казаться ошибкой, это не, так как Пайтон допускает prГЎcticamente , любой тип такой информации как часть одной expresiГіn booleana. Общее правило, - если информация - ноль или vacГ - или (в случае цепи, готовая, и т.д.), равняется False
. Если он отличный от нуля (или он содержит что-то в случае цепи, он заносит в список, и т.д.) равняйся True
. В твоем случае, следовательно, 2
равняйся True
. Следовательно она expresiГіn False or True
верный, и входит из-за первой condiciГіn.
И это ocurrirГЎ независимо от стоимости respuesta
.
Другой способ смотреть, берет ли переменная стоимость или другой, который особенно компактный, если ты хочешь сравнить с mГЎs двух типов стоимости, - следующий:
if respuesta in (1,2):
, Так как в этом случае мы проверяем, estГЎ в tupla (1,2)
, или же, если это 1 Гі, 2 ли стоимости respuesta
.
С другой стороны cГіdigo тебя funciГіn достаточно повторный. Это обычно является одним sГ-ntoma, которого podrГ, - чтобы делаться с циклом. Если tuviГ©ramos структура данных, в которой, для каждой возможной стоимости respuesta
содержалась соответствующая фраза, bastarГ, - чтобы искать в ней nГєmero, чтобы получать цепь.
Словарь - тип, приспособленный для этого. Ключи могут быть tuplas возможных nГєmeros и стоимостью соответствующие фразы. Повторяя из-за равного ключа - стоимости мы получаем tuplas (и мы можем смотреть, если respuesta
estГЎ в них) и в этом случае печатать соответствующую стоимость. AsГ-:
def suerte(respuesta):
respuestas = {
(1,2): "Mueres solo",
(3,4): "Ella existe, pero tiene novio",
(5,6): "Tal vez, cuando salgas de carrera",
(7,8): "Ya la conoces, pero no te has animado",
(9,10):"Ella si te quiere, pero no le gusta tu forma de ser",
(11,12): "Ella está enfrente de tí",
(13,14): "Está fuera de tú nivel",
(15,16): "Olvidalo",
(17,18): "Ya casi se te hace",
(19,20): "Se te va a aventar hoy"
}
for caso, frase in respuestas.items():
if respuesta in caso:
return frase
Наблюдает, что cГіmo мы конвертировали ты cГіdigo в данных. Данные - словарь respuestas
. cГіdigo - сейчас простой цикл, который ищет случай, чтобы возвращать подходящую фразу.
Замечает В тебе funciГіn tenГ-эксперт один
return print("blabla")
. Если, что querГ-эксперт состоял в том, чтобы возвращать фразу, он превышаетprint()
, так как в этом случае estГЎs возвращая стоимость, возвращеннуюprint()
, которойNone
. Ты не нуждаешься в том, чтобы напечатать фразу с нее funciГіn, так как уже ты это делаешь с главной программы сprint(f)
(хотя в твоем случае Г©ste imprimirГ - вNone
а следовательно я только что объяснил)
BГЎsicamente моя ошибка была в or , только modifiquГ© if от
if respuesta == 17 or 18:
до
if respuesta == 17 or respuesta == 18: