python不识别if语句中的变量

时间:2016-03-14 00:15:10

标签: python

我在查明如何在if语句中命名变量时遇到了一些麻烦。任何信息都会有所帮助(我切断了代码的开头,因为它一直有效,直到我想显示成本)p.s这是一个家庭作业

2 个答案:

答案 0 :(得分: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块,如果这会影响任何定价。

答案 1 :(得分:0)

假设它之前有效并且您已经定义了变量并在输入if - elif语句之前为它们指定了适当的值...看起来您的问题是小写拼写错误在一个地方。此外,由于这是一项家庭作业,请检查您的任何真实单词的拼写。你能看到另一个错误。

奖励点 - 弄清楚如何在编辑器中将打印行包含在80列中。 Google PEP-8。像这样的长线只是糟糕的形式。

哦,我所做的只是更正了该变量的拼写,并将此代码添加到您提供的代码上方:

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

我还建议你所有的条件行动都是一致的。在我看来,应该在所有这些中设置提示,小计等。这样你就不会对每个条件得到完全不同的结果,除非这当然是作业。

正如另一个答案所指出的那样,将重复部分放在一个函数中是正确的方法。但是,您可能还没有参加课程。我不知道。

祝你好运&挂在那里!