我正在尝试创建代码以运行河内塔游戏。目前我还在写论文,还没有写很多代码。但是,在尝试创建检查以查看正在移动的项目是否大于或小于要移动到的堆栈/数组中的最后一项时,我仍然坚持要做什么。任何建议都会非常有帮助。我目前正在使用Python 3.5.0。
此功能应该从用户移动并检查以确保移动 是有效的。比如检查猜测的长度以及是否为a 编号并检查以确保该项目小于最后一项 在它正在移动的堆栈中。如果它通过了所有这些,它应该返回 数组并附加到堆栈。
if frompeg == 'c':
if c != []:
temp = c.pop()
else:
print('Error Popping c')
return ()
if topeg == 'c':
if c == []:
c.append(temp)
elif temp < c[-1]:
c.append(temp)
else:
print('Error')
答案 0 :(得分:1)
如果您使用list
s¹作为堆栈而append()
将值推送到堆栈并pop()
从堆栈中获取值,那么您必须访问{的最后一个元素{1}}获取堆栈顶部的值。这可以通过负指数值来完成:
list
在访问值之前,您必须检查列表是否为空。源堆栈不能为空,如果目标堆栈为空,则移动就可以了:
stack = [3, 2, 1]
print(stack[-1]) # Prints: 1
使用def check_tos_values(source, target):
if not source:
raise ValueError('source stack is empty')
return not target or source[-1] < target[-1]
和Stack
等方法将列表封装在is_empty()
类中会使代码更具可读性。
top_of_stack()
¹请使用正确的术语,因为Python中的数组类型(标准库中的def check_tos_values(source, target):
if source.is_empty():
raise ValueError('source stack is empty')
return target.is_empty() or source.top_of_stack() < target.top_of_stack()
模块和Numpy的数组类型)与array
类型不同。
答案 1 :(得分:0)
if frompeg == 'c':
if c != []:
temp = c.pop()
else:
print('Error Popping c')
return ()
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)
答案 2 :(得分:-1)
A =楼层(兰特(100,100)* 1000); contains5 = any(A(:) == 5); 试试这样的事情