我正在尝试创建一个实际将项目从一个堆栈移动到另一个堆栈的函数,但是我有很多重复。任何人都可以帮我改进它吗? (还有一些位需要添加)
def guess2(frompeg, topeg):
temp = -1
if frompeg == 'a':
if a != []:
temp = a.pop()
else:
print('Error Popping a')
return ()
if frompeg == 'b':
if b != []:
temp = b.pop()
else:
print('Error Popping b')
return ()
if frompeg == 'c':
if c != []:
temp = c.pop()
else:
print('Error Popping c')
return ()
if topeg == 'a':
if a == []:
a.append(temp)
elif temp < a[-1]:
a.append(temp)
else:
print('Error')
if topeg == 'b':
if b == []:
b.append(temp)
elif temp < b[-1]:
b.append(temp)
else:
print('Error')
if topeg == 'c':
if c == []:
c.append(temp)
elif temp < c[-1]:
c.append(temp)
else:
print('Error')
print(a,b,c)
guess2('a','b')
print(a,b,c)
答案 0 :(得分:1)
你可以做的一件事就是对象图:
a = [7,6,5,4,3,2,1]
b = []
c = []
dd = {'a':a, 'b':b, 'c':c}
def guess2(frompeg, topeg):
if dd[frompeg] != []:
temp = dd[frompeg].pop()
else:
print('Error Popping', frompeg)
return
if dd[topeg] == []:
dd[topeg].append(temp)
elif temp < dd[topeg][-1]:
dd[topeg].append(temp)
else:
dd[frompeg].append(temp) # put it back
print('Error')