我正在尝试找出现有的原始卡片,但现在已经丢失了。
为了更深入,我将提供一些例子:
示例1
原来有多少张牌? 4
你还有什么牌? 1
你还有什么牌? 4
你还有什么牌? 2
你缺少卡3
示例2
原来有多少张牌? 2
你还有什么牌? 2
你缺少卡1
我遇到的问题是: a)我不确定如何根据初始卡号生成原始输入,并且 b)我的解决方案算法存在缺陷,我不知道如何克服它。
这是我的部分代码:
orig = int(raw_input("How many cards originally? "))
card1 = int(raw_input("What card do you still have? "))
card2 = int(raw_input("What card do you still have? "))
card3 = int(raw_input("What card do you still have? "))
calculation = card1 + card2 + card3
print calculation - orig
但是,它不符合我想要的标准。
如果你能帮助我,请提前多多谢谢。如果有人可以为此写一个解决方案,或者甚至可以指导我这样做,那就太好了。
PS。如果我没有那么好解释,这是我被告知回答的问题集: 编写程序以确定您放错了哪张卡。您的程序应首先询问用户您最初拥有的卡数。然后,您的程序会要求您输入您仍然拥有的每张卡,每行一个号码。然后你的程序应该打印掉丢失的卡的值。
答案 0 :(得分:3)
使用range()
获取包含卡片值的列表,并将其放入set
。从集合中删除输入值,直到只剩下一个。那是丢失的卡片。
答案 1 :(得分:0)
orig = int(raw_input("How many cards originally? "))
allcards = set(range(1, orig+1))
while len(allcards) > 1:
card = int(raw_input("What card do you still have? "))
allcards.remove(card)
print "You are missing card", list(allcards)[0]