小明非常喜欢收集干脆面里面的奥特曼卡,但是有些稀有奥特曼卡真的是太难收集到了。后来某商场搞了一次奥特曼卡兑换活动,只要你有3张编号连续的奥特曼卡,就可以换任意编号的奥特曼卡。请编程“告诉”小明,他最多可以换到几张奥特曼卡(新换来的奥特曼卡不可以再次兑换)。由用户从键盘输入英雄卡的编号,然后输出可以兑换的奥特曼卡数量。
时间: 2024-03-25 15:36:41 浏览: 76
【(高职专科组)第十一届蓝桥杯省模拟赛答案】小明非常不喜欢数字 2,包括那些数位上包含数字 2 的数。如果一个数的数位不包含数字 2,小明将它称为洁净数。
好,我可以为你解答这个问题。首先,我们需要让用户输入英雄卡的编号,然后检查输入的编号是否合法,即是否在1到100之间。接着,我们需要将用户输入的编号存储到一个列表中,并对列表进行排序。
然后,我们可以遍历列表,检查是否存在编号连续的3张英雄卡。如果存在,我们就可以将这3张英雄卡换成任意一张奥特曼卡,并将新获得的奥特曼卡编号加入列表中。注意,新换来的奥特曼卡不能再次兑换。
最后,我们可以统计列表中奥特曼卡的数量并输出。
下面是Python的示例代码实现:
```python
cards = []
while len(cards) < 100:
card = input('请输入英雄卡编号(1-100):')
if not card.isdigit() or int(card) < 1 or int(card) > 100:
print('输入不合法,请重新输入')
continue
if int(card) in cards:
print('该英雄卡已经输入过了,请重新输入')
continue
cards.append(int(card))
cards.sort()
print('当前输入的英雄卡编号:', cards)
exchanged = set()
for i in range(len(cards) - 2):
if cards[i] + 1 == cards[i+1] and cards[i+1] + 1 == cards[i+2]:
if cards[i] not in exchanged and cards[i+2] not in exchanged:
exchanged.add(cards[i])
exchanged.add(cards[i+1])
exchanged.add(cards[i+2])
exchanged_card = input('您可以兑换任意一张奥特曼卡,请输入奥特曼卡编号(1-20):')
if not exchanged_card.isdigit() or int(exchanged_card) < 1 or int(exchanged_card) > 20:
print('输入不合法,请重新输入')
continue
exchanged_card = int(exchanged_card) + 100 # 将奥特曼卡编号转换为101-120
cards.append(exchanged_card)
print('您获得了一张奥特曼卡,编号为', exchanged_card)
cards.sort()
print('您现在有', len(set(cards) & set(range(101, 121))), '张奥特曼卡')
break # 假设用户只输入一次英雄卡编号
```
注意,这只是一个示例代码,可能存在一些漏洞和不足之处,具体实现方式可以根据实际情况进行调整。
阅读全文