如何让 if 语句在执行时记住一个值?
How can I get an if statement to remember a value as it executes?
我在 python 中有一个半工作决策循环正在工作,但需要一个指针才能使其 100% 工作。
我有几个股票代码,我每 'x' 分钟更新一次值,并在 Raspberry Pi LCD 上显示该值。我试图做但失败的是,当一只股票下跌时,让背光变成红色,如果两者都是负值,如果最后一个是负值,但如果第一个是负值,第二个是正值,它就可以正常工作不起作用。我怎样才能完成这项工作?
tickersymbols = ['ticker1', 'ticker2']
i = 0
while (i < 3):
lcd.clear()
for tickerSymbol in tickersymbols:
allInfo = ystockquote.get_all(tickerSymbol)
price = float(allInfo["price"])
change = float(allInfo["change"])
if change >= 0:
backlight.rgb(0,255,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
else:
backlight.rgb(255,0,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
根据您的评论,最简单的做法是在 for 循环之前设置 backlight.rgb(0, 255, 0)
,如果 change
小于 0:
,只需更改为红色
ticker_symbols = ['ticker1', 'ticker2']
while i < 3:
lcd.clear()
backlight.rgb(0, 255, 0) # reset normal background each time
for ticker_symbol in ticker_symbols:
all_info = ystockquote.get_all(ticker_symbol)
price = float(all_symbol["price"])
change = float(all_symbol["change"])
if change < 0: # only change to red when we find any price drop
backlight.rgb(255, 0, 0)
lcd.write(ticker_symbol + "= %+3.2f (%+0.2f)" % (price, change)) # always change display
始终以 backlight.rgb(0, 255, 0)
开头然后更改为红色以通知降价是有意义的。否则你如何通过查看屏幕知道屏幕是前一滴还是当前的红色。
这是非常基本的,但为什么不在 if
、(只要您的默认颜色不是红色) 中添加另一个条件语句。这样,您的 for
循环仍将继续到 运行,并且您仍将获得此时所做的所有 lcd.write
。
tickersymbols = ['ticker1', 'ticker2']
i = 0
while (i < 3):
lcd.clear()
backlight.rgb(255,0,0)
for tickerSymbol in tickersymbols:
allInfo = ystockquote.get_all(tickerSymbol)
price = float(allInfo["price"])
change = float(allInfo["change"])
if change < 0:
backlight.rgb(0,255,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
仔细查看您的问题后,您不想中断 for 循环。这将导致您错过剩余 tickerSymbols 的 lcd.write() 语句。
相反,如果您看到价格下跌,您只想设置一个标志。然后,循环之后,根据flag改变LED的颜色。
tickersymbols = ['ticker1', 'ticker2']
i = 0
while (i < 3):
lcd.clear()
stockWentDown=False
for tickerSymbol in tickersymbols:
allInfo = ystockquote.get_all(tickerSymbol)
price = float(allInfo["price"])
change = float(allInfo["change"])
lcd.write(tickerSymbol+ "= %+3.2f (%+0.2f)" % (price, change))
if change < 0:
stockWentDown=True
if not stockWentDown: #if the stock went up or stayed the same
#color it green
backlight.rgb(0,255,0)
elif stockWentDown: #if the stock went down
#color it red
backlight.rgb(255,0,0)
根据您的代码,如果第一个更改是负数而第二个不是,您最终会覆盖显示。在我看来,只要 Padraic Cunningham 突出显示值发生更改,您所要做的就是 break 退出 while 循环。但是,如果你想通过 while 循环两次维护 运行 的配置,你总是可以设置一个标志
tickersymbols = ['ticker1', 'ticker2']
i = 0
flag=0
while (i < 3):
lcd.clear()
for tickerSymbol in tickersymbols:
allInfo = ystockquote.get_all(tickerSymbol)
price = float(allInfo["price"])
change = float(allInfo["change"])
if (change >= 0 && flag==0):
backlight.rgb(0,255,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
else:
backlight.rgb(255,0,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
flag=1
我在 python 中有一个半工作决策循环正在工作,但需要一个指针才能使其 100% 工作。
我有几个股票代码,我每 'x' 分钟更新一次值,并在 Raspberry Pi LCD 上显示该值。我试图做但失败的是,当一只股票下跌时,让背光变成红色,如果两者都是负值,如果最后一个是负值,但如果第一个是负值,第二个是正值,它就可以正常工作不起作用。我怎样才能完成这项工作?
tickersymbols = ['ticker1', 'ticker2']
i = 0
while (i < 3):
lcd.clear()
for tickerSymbol in tickersymbols:
allInfo = ystockquote.get_all(tickerSymbol)
price = float(allInfo["price"])
change = float(allInfo["change"])
if change >= 0:
backlight.rgb(0,255,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
else:
backlight.rgb(255,0,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
根据您的评论,最简单的做法是在 for 循环之前设置 backlight.rgb(0, 255, 0)
,如果 change
小于 0:
ticker_symbols = ['ticker1', 'ticker2']
while i < 3:
lcd.clear()
backlight.rgb(0, 255, 0) # reset normal background each time
for ticker_symbol in ticker_symbols:
all_info = ystockquote.get_all(ticker_symbol)
price = float(all_symbol["price"])
change = float(all_symbol["change"])
if change < 0: # only change to red when we find any price drop
backlight.rgb(255, 0, 0)
lcd.write(ticker_symbol + "= %+3.2f (%+0.2f)" % (price, change)) # always change display
始终以 backlight.rgb(0, 255, 0)
开头然后更改为红色以通知降价是有意义的。否则你如何通过查看屏幕知道屏幕是前一滴还是当前的红色。
这是非常基本的,但为什么不在 if
、(只要您的默认颜色不是红色) 中添加另一个条件语句。这样,您的 for
循环仍将继续到 运行,并且您仍将获得此时所做的所有 lcd.write
。
tickersymbols = ['ticker1', 'ticker2']
i = 0
while (i < 3):
lcd.clear()
backlight.rgb(255,0,0)
for tickerSymbol in tickersymbols:
allInfo = ystockquote.get_all(tickerSymbol)
price = float(allInfo["price"])
change = float(allInfo["change"])
if change < 0:
backlight.rgb(0,255,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
仔细查看您的问题后,您不想中断 for 循环。这将导致您错过剩余 tickerSymbols 的 lcd.write() 语句。
相反,如果您看到价格下跌,您只想设置一个标志。然后,循环之后,根据flag改变LED的颜色。
tickersymbols = ['ticker1', 'ticker2']
i = 0
while (i < 3):
lcd.clear()
stockWentDown=False
for tickerSymbol in tickersymbols:
allInfo = ystockquote.get_all(tickerSymbol)
price = float(allInfo["price"])
change = float(allInfo["change"])
lcd.write(tickerSymbol+ "= %+3.2f (%+0.2f)" % (price, change))
if change < 0:
stockWentDown=True
if not stockWentDown: #if the stock went up or stayed the same
#color it green
backlight.rgb(0,255,0)
elif stockWentDown: #if the stock went down
#color it red
backlight.rgb(255,0,0)
根据您的代码,如果第一个更改是负数而第二个不是,您最终会覆盖显示。在我看来,只要 Padraic Cunningham 突出显示值发生更改,您所要做的就是 break 退出 while 循环。但是,如果你想通过 while 循环两次维护 运行 的配置,你总是可以设置一个标志
tickersymbols = ['ticker1', 'ticker2']
i = 0
flag=0
while (i < 3):
lcd.clear()
for tickerSymbol in tickersymbols:
allInfo = ystockquote.get_all(tickerSymbol)
price = float(allInfo["price"])
change = float(allInfo["change"])
if (change >= 0 && flag==0):
backlight.rgb(0,255,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
else:
backlight.rgb(255,0,0)
lcd.write(tickerSymbol + "= %+3.2f (%+0.2f)" % (price, change))
flag=1