2016-11-21 4 views
-1

ОК, так что я не уверен, что им делать неправильно здесь, но мой код автоматически выбирая первый в «если» заявление для exmaple еслиМой «если» заявления Арент работает

if 1 == 2 
print("Works") 
elif 1 == 1 
print("There we go") 

это автоматически выберет первый вариант, даже если введено неправильное значение. См. мой код ниже:

def troubleshoot(): 
print("Now we will try and help you with your iPhone.") 
print("") 
time.sleep(1) 
hardsoft = input(str("Is the issue a problem with hardware of software? Write n if you are not sure: ")) #ISSUE WITH IT SELECTING THE FIRST ONE NO MATER WHAT# 
if hardsoft == "Software" or "software" or "S" or "s" or "soft" or "Soft": 
    software() 
elif hardsoft == "Hardware" or "hardware" or "Hard" or "hard" or "h" or "H": 
    hardware() 
elif hardsoft == "Not sure" or "not" or "Not" or "NOT" or "not sure" or "n" or "N": 
    notsure() 
else: 
    print("Sorry, that command was not recognised") 
    print("Please try again") 
    troubleshoot() 
+3

В вашем первом блоке кода отсутствуют двоеточия и отступы. Это пропущенная копия-вставка или ваш код выглядит именно так? – Celeo

+1

'if hardsoft == 'Software' или hardsoft == 'software' или hardsoft == 'S' ....' Или 'if 'S' == hardsoft [: 1] .upper():' –

ответ

0

В инструкции вашего оператора есть много логических частей. Каждая часть преобразуется в логическую - поэтому любая непустая строка преобразуется в True. Как я могу предложить вам хотеться что-то вроде этого:

def troubleshoot(): 
print("Now we will try and help you with your iPhone.") 
print("") 
time.sleep(1) 
hardsoft = input(str("Is the issue a problem with hardware of software? Write n if you are not sure: ")) #ISSUE WITH IT SELECTING THE FIRST ONE NO MATER WHAT# 
if hardsoft == "Software" or hardsoft == "software" or hardsoft == "S" or hardsoft == "s" or hardsoft == "soft" or hardsoft == "Soft": 
    software() 
elif hardsoft == "Hardware" or hardsoft == "hardware" or hardsoft == "Hard" or hardsoft == "hard" or hardsoft == "h" or hardsoft == "H": 
    hardware() 
elif hardsoft == "Not sure" or hardsoft == "not" or hardsoft == "Not" or hardsoft == "NOT" or hardsoft == "not sure" or hardsoft == "n" or hardsoft == "N": 
    notsure() 
else: 
    print("Sorry, that command was not recognised") 
    print("Please try again") 
    troubleshoot() 

Кроме того, вы должны быть в курсе такого длинного КСФА, и оптимизировать этот код.

+0

Спасибо так много для этого, это именно то, что я искал. Как бы я его оптимизировал? –

+0

Вы можете предопределить все ваши случаи в массивах: sw = [«Программное обеспечение», «Программное обеспечение», «S», «С», «Мягкий», «Мягкий»), а затем просто вызовите sw.index [hardsoft]> = 0 – Nosyara

1

В первом блоке кода у вас отсутствуют отступы и двоеточия. Это должно быть:

if 1 == 2: 
    print("Works") 
elif 1 == 1: 
    print("There we go") 

Таким образом, вы также получите ожидаемый результат.

Для второй части: if hardsoft == "Software" or "software" or "S" or "s" or "soft" or "Soft": не является допустимым условием - или, по крайней мере, он не делает то, что, по вашему мнению, должен делать. Каждая строка там преобразуется в логическое значение, и любая строка, которая не является пустой, будет интерпретироваться как истина. Поэтому условие, подобное if "Software", всегда верно. Правильным условием было бы следующее:

if hardsoft == "Software" or hardsoft == "software" or hardsoft == "S" or hardsoft == "s" or hardsoft == "soft" or hardsoft == "Soft": 
    ... and so on 
+0

Огромное спасибо за вашу помощь –

+0

Мое предложение - 'if hardsoft.lower() в [" software "," s "," soft "]:' –

+0

Thats awesome, thanks again man –

Смежные вопросы