Проблема Python if / elif с random.randint

#python #python-3.x

#python #python-3.x

Вопрос:

Это часть более серьезной проблемы, но у меня возникли некоторые проблемы с этой функцией if / elif.

 def fish():
    import random   

    score = 0

    i = random.randint(0,39)

    if i == [0,19]:
        print("You caught nothing!")
    elif i == [20,39]:
        print("You caught a Minnow!  10 points.")
        score  = 10
    print(i)
    print(score)
fish()
  

Когда я запускаю это, все, что я получаю, это число randint и 0 для оценки. Я не совсем уверен, что я здесь делаю не так.

Комментарии:

1. Ваша проблема не имеет ничего общего с random.randint и никак не связана с логикой if / elif; она связана со сравнением значений. Четко подумайте о том, что вы ожидаете i == [0, 19] иметь в виду, и почему это должно так означать.

Ответ №1:

Да, эм … это не так, как это работает. Вы сравниваете целое число со списком.

     if 0 <= i < 20:
        print("You caught nothing!")
    elif 20 <= i < 40:
        print("You caught a Minnow!  10 points.")
        score  = 10
  

Ответ №2:

Вы сравниваете целое число со списком.

Чтобы сделать то, что вы пытаетесь сделать, вот один из способов:

 if i in range(0, 20):
    print("You caught nothing!")
elif i in range(20, 40):
    print("You caught a Minnow!  10 points.")
    score  = 10
  

Ответ №3:

Что вы хотите сделать, это:

 if i in range(20):
    print("You caught nothing!")
elif i in range(20,40):
    print("You caught a Minnow!  10 points.")
    score  = 10
  

Или, возможно, лучше:

 if i < 20:
    print("You caught nothing!")
else:
    print("You caught a Minnow!  10 points.")
    score  = 10
  

Ответ №4:

i является int , вы сравниваете int со списком int , вы должны:

 if i in range(19)
...
elif i in range(20,39):