2016-03-14 3 views
-2

У меня возникли проблемы с выяснением того, как назвать переменную внутри оператора if. Любой бит информации поможет (я сокращаю начало кода, потому что все работает до тех пор, пока я не хочу отображать стоимость). P.s это домашнее задание.python не распознает переменную в выражении if

+1

Все они должны быть определены для того, чтобы все они отображались. Как это написано в настоящее время, вы определяете только пару переменных в каждом 'elif'. Вы можете использовать значения по умолчанию, определяя их все перед всеми 'if' и' elif''s – zondo

+0

. Что сказал zondo. Однако я подозреваю, что у вас должно быть два отдельных блока if if elif. Поэтому измените 'elif month ==" july ":' to 'if month ==" july ":' и поставьте перед ним пустую строку, чтобы люди, читающие ваш код, могли легко увидеть, что у него есть два отдельных 'if ... elif 'блоков. –

+0

Я не согласен с downvotes. У полных новичков будут такие проблемы, как не определение переменных. Проблема поставлена ​​достаточно хорошо, чтобы мы могли помочь. – roadrunner66

ответ

2

@Liz: Вышеприведенные комментарии верны. Вам нужно указать значения для переменных для выполнения кода.

x=1 
a=2*x # example for your code , after you defined the needed variable x 
print a 

В примере ниже решении я определяющая функцию (см def ключевого слова), что позволяет мне писать код, не определив переменные еще. Итак, после того как я закончил определение функции, я могу определить переменные и выполнить функцию.

def dosomething(x): # your code in a function, you don't need to know x yet 
    a=2*x 
    return a 

x=10 # now you know x and you want to use it in your function 
print dosomething(x) # will print 20 

Я надеюсь, что это поможет с вашим пониманием. Здесь ваша задача решить:

def totals(cabin,month,n): 
    if cabin == "inner cabin": 
     cost = 400 * n 
    elif cabin == "ocean view cabin": 
     cost= 800 * n 
    elif cabin =="balcony": 
     cost= 1200 * n 

    # the if-block for the months is separate from the loop for the cost 
    if month =="july": 
     tip= 10*5*n 
     subtotal= cost + tip # add tips 
    elif month=="june": 
     tip= 10* 5 * n 
     cost1= cost + tip 
     cost2= cost1 * .10 # a 10% discount 
     subtotal= cost1 - cost2 
    elif month=="august": 
     subtotal = cost # no tip, no discount 
    # there should be an else for other months 
    return cost, subtotal 

month='july'  
cabin='balcony' 
n=2 # number of passengers 
cost,subtotal = totals(cabin,month,n) 

print "\nMonth of vaction reservation:",month, \ 
"\nNumber of passengers:",n, \ 
"\nType of Cabin:",cabin, \ 
"\nCost of cabin:",cost, \ 
"Subtotal:",subtotal 

выход:

Month of vaction reservation: july 
Number of passengers: 2 
Type of Cabin: balcony 
Cost of cabin: 2400 Subtotal: 2500 

Вы должны добавить пункт назначения, который является еще одним, отдельным решением, т.е. должно иметь свой собственный if..elif..else блок, если это влияет на любой ценой.

+0

Это нормально, но это не «цикл», потому что он не петляет. Вместо этого назовите его «if block». – Marius

+0

Спасибо, мой недосмотр. Исправлена. – roadrunner66

+0

Я изменил разрыв строки в заявлении на печать на основе комментария JackW327s. – roadrunner66

0

Предполагая, что это сработало раньше, и вы определили свои переменные и задали им соответствующие значения, прежде чем вводить инструкции if-elif ... похоже, что ваша проблема заключается в том, что промежуточный итог ошибочен в одном месте. Кроме того, поскольку это домашнее задание, проверьте правильность написания каких-либо реальных слов. У меня есть еще одна ошибка, которую я вижу.

Бонусная точка - выяснить, как получить строку печати, содержащуюся в пределах 80 столбцов в редакторе. Google PEP-8. На самом деле такие длинные строки - это просто плохая форма.

О, все, что я сделал правильно правописание на этой переменной и добавил этот код, приведенный выше код, который вы поставки:

cabin = "inner cabin" 
passangers = 200 
Destination = "Rio" 
month = "june" 
subtotal = 0 

Я хотел бы также предположить, что все условные действия быть последовательными. По моему мнению, во всех случаях должны быть установлены советы, промежуточные итоги и т. Д. Таким образом, вы не получите совершенно разных результатов для каждого условия, если, конечно, это не было задание.

Как следует из другого ответа, включение повторяющихся частей в функцию - это правильный путь. Однако вы, возможно, еще не выполняете функции в курсе. Не знаю.

Удачи & там!

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