所以這裏的任務是:輸入數量從1到N的卡片。然後輸入除一個之外的所有數字。 你的程序應該打印丟失的卡號。 這裏是我的代碼:紙牌遊戲的更好解決方案
n = int(input())
lst = []
for i in range(n - 1):
lst.append(int(input()))
for i in range(1, n + 1):
if not i in lst:
print(i)
但我需要做,而不使用列表。這怎麼可能?
所以這裏的任務是:輸入數量從1到N的卡片。然後輸入除一個之外的所有數字。 你的程序應該打印丟失的卡號。 這裏是我的代碼:紙牌遊戲的更好解決方案
n = int(input())
lst = []
for i in range(n - 1):
lst.append(int(input()))
for i in range(1, n + 1):
if not i in lst:
print(i)
但我需要做,而不使用列表。這怎麼可能?
您可以使用set.difference
:
set(range(1, n + 1)).difference(lst)
如果@Nofake不允許使用列表,我非常懷疑他或她是否被允許使用集合。 –
繼續取數字並添加它們。
a = 0
a = a+newNumber
然後當你完成輸入。當你需要輸入下一次, 開始減:
a = a-newNumber
的a
末是你沒有考慮投入下一次的數量。
import random
n = 12
s = {x for x in range(n)}
print(s)
pick = random.sample(s,1).pop(0)
print(pick)
s.remove(pick)
print(s)
輸出:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
10
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11}
下面的方法不使用任何名單。它假定你可以使用ast
模塊:
import ast
cards_1 = input("Enter your cards: ")
cards_2 = input("Enter the list again, with one missing: ")
total_cards_1 = ast.literal_eval(cards_1.replace(" ", "+"))
total_cards_2 = ast.literal_eval(cards_2.replace(" ", "+"))
print("{} is missing".format(total_cards_1 - total_cards_2))
給你以下可能的輸出:
Enter your cards: 1 3 7 12
Enter the list again, with one missing: 12 3 1
7 is missing
如果您不能使用ast
,那麼危險的替代方案是使用eval()
如下:
cards_1 = input("Enter your cards: ")
cards_2 = input("Enter the list again, with one missing: ")
total_cards_1 = eval(cards_1.replace(" ", "+"))
total_cards_2 = eval(cards_2.replace(" ", "+"))
print("{} is missing".format(total_cards_1 - total_cards_2))
eval()
應儘可能避免。
所有數字的總和爲n *(n + 1)/ 2。除了其中一個數字的總和是總和(1st)。你如何找到缺少的號碼..? – Ioannis