我的代码如下:
def pStockName():
global StockList,fStockList
fStockList = []
pStockList = []
StockList = str(raw_input('Enter pipe separated list of StockS : ')).upper().strip()
items = StockList.split("|")
count = len(items)
print 'Total Distint Stock Count : ', count
items = list(set(StockList.split("|")))
pipelst = [i.replace('-mc','').replace('-MC','').replace('$','').replace('^','') for i in items]
filepath = '/fsnadmin/SAAS_SUPPORT/Stock_data.txt'
f = open(filepath, 'r')
for lns in f:
split_pipe = lns.split(':', 1)
if split_pipe[0] in pipelst:
index = pipelst.index(split_pipe[0])
pStockList=split_pipe[0]+"|"
fStockList.append(pStockList)
del pipelst[index]
for lns in pipelst:
print bcolors.red + lns,' is not found in SaaS Stock Inventory' + bcolors.ENDC
if pipelst:
#if not lns:
uResp = str(raw_input('Do You Want To Continue with option 0 [YES|Y|NO|N] : ')).upper().strip()
if uResp == "YES" or uResp == "Y":
pStockName ()
else:
#StockList = None
print_menu ()
f.close()
当我执行此代码时,它会提示我编写股票清单,如果我给出所有正确的股票(在/location/stock_data.txt中提到,在上面的代码中调用),它会正确执行,如下所示:
输入管道分隔的StockS列表:aaa | hfa | fff
Total Distint Stock Count:3
属于其他中心的股票:
其他股票数量= 0
属于现有中心的股票:
US1中的活跃股票:
^ AAA $ | ^ HFA $
US2终止股票:
^ FFF $
从当前中心忽略的库存数量= 1
您已输入属于此中心的StockList:^ AAA $ | ^ HFA $
有效库存数量:2
您想继续[YES | Y | NO | N]:
如果提供所有错误的库存(如果在/location/stock_data.txt文件中不可用)并执行上面的代码,则会得到如下结果:
输入您的选择[0-26]:0
输入管道分隔的StockS列表:jjj | uuu | oo
Total Distint Stock Count:3
在库存清单中找不到UUU
在库存中找不到OO
JJJ未在库存中找到
是否要继续选项0 [是|是|否| N]:是
输入管道分隔的股票清单:
到目前为止,我正在按需要获得结果。但是,如果我在正确的股票之间给出任何错误的股票,它不再要求输入股票的分隔列表,尽管它执行如下:
输入管道分隔的StockS列表:aaa | hfa | ooo
Total Distint Stock Count:3
在库存清单中找不到OOO
属于其他数据中心的股票:
其他中心的库存数量= 0
属于当前数据中心的股票:
US1中的活跃股票:
^ AAA $ | ^ HFA $
从当前中心忽略的库存数量= 0
您已输入属于此中心的StockList:^ AAA $ | ^ HFA $
有效库存数量:2
您想继续[YES | Y | NO | N]:
正如您在上述声明中看到的那样,在使用正确的股票执行该代码之后,我得到错误的股票信息(在股票清单中找不到OOO)。 我想要的是,如果我提供任何错误的股票,它应该在给出错误的股票信息后不应该继续,之后它应该再次询问输入管道分离的股票列表后给出选项Y(是),就像当我提供所有错误的股票时,我收到了声明。
请让我知道如何实现这一目标。
请查看以下执行
输入您的选择[0-26]:0
输入管道分隔的StockS列表:aaa | hfa | kk
Total Distint Stock Count:3
库存中找不到KK
是否要继续选项0 [是|是|否| N]:是
输入管道分隔的StockS列表:aaa | hfa
Total Distint Stock Count:2
属于其他中心的股票:
其他中心的库存数量= 0
属于现有中心的股票:
US1中的活跃股票:
^ AAA $ | ^ HFA $
从当前中心忽略的库存数量= 0
您已输入属于此中心的StockList:^ AAA $ | ^ HFA $
有效库存数量:2
您想继续[YES | Y | NO | N]:Y
属于其他中心的股票:
其他中心的库存数量= 0
属于现有中心的股票:
US1中的活跃股票:
^ AAA $ | ^ HFA $
从当前中心忽略的库存数量= 0
您已输入属于此中心的StockList:^ AAA $ | ^ HFA $
有效库存数量:2
您想继续[YES | Y | NO | N]:
答案 0 :(得分:0)
似乎你想要:
if pipelst: #if pipelst is not empty
而不是
if not lns:
第一个将检查pipelst
是否包含元素,而第二个将执行其他操作。 (我认为它将检查前一个for each
语句中迭代的最后一个元素是否为0 /空,但不确定。)
如果您想在单个股票无效时输入此if
,并且pipelst
此时似乎包含所有无效股票,请检查pipelst
是否为空或看起来不是一个好选择。