Python 3, если /elif проблема

У меня есть оператор if/elif в моем фрагменте кода ниже... по какой-то причине, даже когда я запускаю оператор elif, консоль все еще печатает оператор if вместо elif... я уверен, что упустил что-то глупое.

use_stim = str.lower (input ("Вы хотите использовать этот стимпак сейчас?"))

    if "ok" in use_stim or "okay" in use_stim or "yes" in use_stim or "sure" in use_stim or "you bet" or "good idea" in use_stim:
        char_health = char_health + char_stim_heal
        char_stims = char_stims - 1
        print(char_name + ": Using stimpak, I feel better")  
        print("")
        print("***STATS***")
        print("Health:" + str(char_health)) 
        print("Stimpaks:" + str(char_stims))
        print("***STATS***")
        print("")            
        search_next = str.lower(input(char_name + ": Alright, what's next? Weapons or amunition?"))
        print(username + ": " + search_next)

    elif "no" in use_stim or "nope" in use_stim or "never" in use_stim or "no way" in use_stim or "not a chance" in use_stim or "i don't think so" in use_stim:
        print(user_name + ": " + use_stim)
        print(char_name + ": Alright, i'll save it for later.")
        char_stims = 1
        char_health = 75
        print("")
        print("***STATS***")
        print("Health:" + str(char_health)) 
        print("Stimpaks:" + str(char_stims))
        print("***STATS***")
        print("")

1 ответ

Решение

Это потому что ты скучаешь по in use_stim в первом операторе if после "You bet";

  if "ok" in use_stim or "okay" in use_stim or "yes" in use_stim or "sure" in use_stim or "you bet" in use_stim or "good idea" in use_stim:
        char_health = char_health + char_stim_heal
        char_stims = char_stims - 1
        print(char_name + ": Using stimpak, I feel better")  
        print("")
        print("***STATS***")
        print("Health:" + str(char_health)) 
        print("Stimpaks:" + str(char_stims))
        print("***STATS***")
        print("")            
        search_next = str.lower(input(char_name + ": Alright, what's next? Weapons or amunition?"))
        print(username + ": " + search_next)

    elif "no" in use_stim or "nope" in use_stim or "never" in use_stim or "no way" in use_stim or "not a chance" in use_stim or "i don't think so" in use_stim:
        print(user_name + ": " + use_stim)
        print(char_name + ": Alright, i'll save it for later.")
        char_stims = 1
        char_health = 75
        print("")
        print("***STATS***")
        print("Health:" + str(char_health)) 
        print("Stimpaks:" + str(char_stims))
        print("***STATS***")
        print("")

Это должно работать сейчас.

Пару заметок для вас, если хотите;

  • Вы можете добавить дополнительную строку между операторами печати, используя /n так что вы можете удалить print("") заявления и добавить \n к предыдущему утверждению, например;

    print(char_name + ": Using stimpak, I feel better\n") <<< Add \n here  
    print("")                                             <<< Remove this
    print("***STATS***")
    print("Health:" + str(char_health)) 
    print("Stimpaks:" + str(char_stims))
    print("***STATS***\n")                                <<< Add \n here 
    print("")                                             <<< Remove this
    
  • Использование in будет искать текст, который вы указали в любом месте строки, поэтому "no" in use_stim будет работать на no, nope, no way а также not a chanceПоэтому вы можете упростить elif заявление к;

elif "no" in use_stim or "never" in use_stim or "i don't think so" in use_stim:

Другие вопросы по тегам