我基本上需要能够限制可以附加在列表中的项目。就像在单人纸牌游戏中一样,我需要将一个项目添加到列表中,如果它是按字母顺序跟随该项目,如果它没有,则返回错误。例如;字母d可以附在字母c的前面,如果它的字母不同或顺序错误,那么卡片就不会被移动。
以下代码是迄今为止我能做的最好的代码。
a = ['a','c','e','j','h']
b = ['b','d','f','i','g']
def list_a():
loop = 0
choice = 0
while loop == 1:
print('''Choose from one of the following options:
1. Move item from list b to list a
2. add item to list a!''')
choice = int(input("What would you like to do?: "))
if choice == 1:
move_item()
elif choice == 2:
add_item()
return choice
print('List a: ',a)
print('List b: ',b)
def move_item():
loop = 0
choice = 0
while loop == 1:
print('''Choose from one of the following options:
1. Move item 1
2. move item 2
3. Move item 3
4. move item 4
5. Move item 5!''')
choice = int(input("What would you like to do?: "))
if choice == 1:
a.append(b.pop(0))
elif choice == 2:
a.append(b.pop(1))
elif choice == 3:
a.append(b.pop(2))
elif choice == 4:
a.append(b.pop(3))
elif choice == 5:
a.append(b.pop())
return choice
def add_item():
print()
list_a()
答案 0 :(得分:2)
创建列表的子类并覆盖 setitem ,插入和/或存储业务逻辑所需的任何其他内容。
class MyList(list):
def passes_rules(self, idx, value):
""" Checks to see if this value can be set to this index """
def __setitem__(self, idx, value):
if self.passes_rules(idx, value):
super(MyList, self).__setitem__(idx, value)
其他人可能会告诉我们 setitem 是否足够,或者您是否需要担心追加和插入。实验也可以,但让我知道你发现了什么。 :)
答案 1 :(得分:0)
您可以使用类似的内容测试letter1
之前的letter2
是否出现在import string
if string.ascii_lowercase.find(letter1) < string.ascii_lowercase.find(letter2):
print("Letter 1 comes before letter 2")
之内。
{{1}}