Если оператор не запускается даже после ввода пользователем - PullRequest
0 голосов
/ 11 июля 2020
optionone = 0    #DEFINING BOTH VARIABLES 
optiontwo = 0

class first_day_morning:    #WORKING 
    optionone = input("It is now morning, would you like to (1) Leave your house or (2) Do some chores? ")


def first_choice(optionone):        #NOT WORKING DOING ELSE COMMAND FOR 1 INPUT
     if optionone == 1: 
         time.sleep(1)
        print('')
        print("You have chosen to get out of the house for once")
    elif optionone == 2: 
        time.sleep(1)
        print('')
        print("DO LATER")
    else: 
        time.sleep(1)
        print('')
        print("please choose a valid option")

first_choice(int(input()))

Я пытаюсь сделать так, чтобы пользовательский ввод определял результат оператора if, если пользователь вводит 1, то что-то происходит, если пользователь вводит 2, то происходит что-то еще, если пользователь вводит что-то еще, чем оператор if запускается снова, поскольку допустимыми входами являются только 1 или 2. Однако проблема в том, что независимо от того, что вводит пользователь, оператор if не запускается, и ошибка также не отображается. Я попробовал попробовать /, кроме случая, когда по какой-то причине ошибка просто не отображается (попробуйте, кроме ValueError :), и ничего не работало. Я также попытался указать ввод как str, int, float, без спецификации, raw_input et c. и ничего толком не работает, может кто поможет?

пс. Я использую код Visual Studio

Как видите, оператор if не запускается, поскольку ошибка не отображается даже после ввода пользователем.

Ответы [ 3 ]

1 голос
/ 11 июля 2020

Когда программа запускается, тело класса будет оценено, что означает, что input("It is now morning, would you like to (1) Leave your house or (2) Do some chores? ") запросит ввод. Это значение затем будет сохранено в first_day_morning.optionone, однако first_choice optionone другое. Он равен параметру, указанному в последней строке, int(input()), который автоматически запросит другой ввод, а затем преобразует его в целое число. Из того, что я думаю, вы пытаетесь достичь, я бы рекомендовал вам удалить класс и изменить последнюю строку на:

first_choice(int(input("It is now morning, would you like to (1) Leave your house or (2) Do some chores? ")))
0 голосов
/ 11 июля 2020

Я действительно не понимаю, что вы пытаетесь выполнить здесь sh, но код работает для меня, несколько советов от новичка: - вы определяете optiontwo и никогда не используете его - вы заполняете optionone вводом внутри класса, не знаю почему, причина никогда не используется, не уверен, что вы хотите, но попробуйте следующее:

import time

def first_choice(optionone):        #NOT WORKING DOING ELSE COMMAND FOR 1 INPUT
    if optionone == 1: 
        time.sleep(1)
        print('')
        print("You have chosen to get out of the house for once")
    elif optionone == 2: 
        time.sleep(1)
        print('')
        print("DO LATER")
    else: 
        time.sleep(1)
        print('')
        print("please choose a valid option")

first_choice(int(input("It is now morning, would you like to (1) Leave your house or (2) Do some chores? ")))

хотя, проверьте его в консоли, не уверен в vscode, но при запуске внутри sublime не запрашивает ввод

0 голосов
/ 11 июля 2020
def first_choice():
    print('')
    print("You have chosen to get out of the house for once")

def second_choice():
    print('')
    print("DO LATER")

def third_choice():
    print('')
    print("please choose a valid option")


while True:

    print("""Select a choice""")

    c = int(input('enter your choice:'))
    if c == 1:
        first_choice()
    elif c == 2:
        second_choice()
    elif c == 3:
        third_choice()
    elif c == 4:
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...