如何使用列表/条件语句添加项目总数

时间:2018-11-22 19:38:42

标签: python processing

试图编写代码,当按下某个键时,单词在画布上弹出(在这种情况下,它们都是饮料)。当用户持续按下某些键来添加饮料时,总费用就加起来了。

但是,在我的代码中唯一可以做的事情是“水”这个词,总成本不断增加。

如何修复代码,以便每个菜单项出现在画布上以及如何修复总成本?

(我尝试移动背景色,但是仍然无法使用。同样,该编码来自处理过程,不是Java脚本)

def setup():
    size (500, 500)
    background (255)

menu = ["Mocha","Coffee","Juice","water"]
prices = [5,2,3,1]
order = []
total = ''
cost = 0

Mocha = 5
Coffee = 2
Juice = 3
Water = 1
undo = -1
space = 0
i = 0
str1= 1

def draw():
    global total
    space = 100
    fill (0)
    line(250,0,250,500)
    textSize (30)
    text("Menu", 60, 50)

    textSize (15)
    for i in range(len(menu)):
        str1 = menu[i] + " : $" + str(prices[i])
        text(str1, 70, space)
        space = space+20

    textSize (30)
    text( "Your Order:", 260,50)
    textSize (15)
    #total = text("Cost : $0", 300,450)
    total= text(str1, 350, 450)

def keyPressed():
    global space
    global cost, total, menu, str1, i
    if key == 'm' :
        i=0
    elif key == 'c' :
        i=1
    elif key == 'j' :
        i=2
    elif key == 'w' :
        i=3
    elif undo == 'u' :
        i=-1
    space = space+20

    if i == -1 :
        if len(order) > 0:
            menu = order.pop(0)
            menu.pop(item)
    for i in range(len(menu)):
        if menu[i] == str1 :
            cost = cost - prices[i]
            menu.pop(total)
            str1 = "Cost : $" + str(cost)
            total= text(str1, 350, 450)

    else :
        order.append(text( menu[i], 300, space+90))
        cost = cost+prices[i]
        str1 = "Cost : $" + str(cost)
        total = text( str1, 360, 450)

1 个答案:

答案 0 :(得分:0)

总成本不断增加,因为没有在draw()循环之间清除该阶段。在绘制循环的顶部添加background(255),以便刷新舞台。但是,这样做会导致需要遍历该订单并在每个循环的“您的订单:”部分中绘制其内容。

您得到的名称与变量i冲突,这使您的代码执行起来很奇怪。删除程序顶部附近的i = 0声明。这解决了“仅水”问题。

这需要更改:order.append(text( menu[i], 300, space+90))。您无法将处理绘图(text())方法添加到这样的数组中。

将所有内容(以及其他一些内容)放在一起可以得到以下信息:

def setup():
size (500, 500)
background (255)

menu = ["Mocha","Coffee","Juice","Water"]
prices = [5,2,3,1]
order = []
cost = 0

def draw():
    background(255)

    fill(0)
    line(250,0,250,500)
    textSize (30)
    text("Menu", 60, 50)

    space = 100
    textSize (15)
    for i in range(len(menu)):
        str1 = menu[i] + " : $" + str(prices[i])
        text(str1, 70, space)
        space = space+20

    textSize (30)
    text( "Your Order:", 260,50)

    textSize (15)
    text("Cost : $" + str(cost), 350, 450)

    for ypos, item in enumerate(order):
        text(menu[item] + ".... $" + str(prices[item]), 270, ypos*20 + 80) 

def keyPressed():
    global cost, menu
    if key == 'm' :
        i=0
    elif key == 'c' :
        i=1
    elif key == 'j' :
        i=2
    elif key == 'w' :
        i=3
    elif key == 'u' :
        i=-1
    else: # do nothing if the key is undefined
        return

    if i == -1 :
        if len(order) > 0:
            cost -= prices[order[-1]] # subtract cost
            order.pop() # pop the order, not the menu!
    else :
        cost += prices[i]
        order.append(i)