2016-07-19 40 views
4

每年在超級碗比賽期間,我的父親會跟他的朋友打賭,猜猜得分的最後一個數字,以及誰猜對了誰贏得20美元。我的問題很難用語言來解釋,所以我畫了一個圖表:http://i.stack.imgur.com/1ECrH.jpg取4個數字的總和,然後將這4個數字加到這4個數字的總和上,然後重複

基本上我想將4個數字(2,3,6,7)彼此相加,然後取16個數字並將這4個數字加到每一筆款項。 當我重複這個過程約100次後,我應該有足夠的分數來找到大部分的最終號碼和最可能的最終號碼。

這需要花很多時間才能手工完成,因此我試圖編寫一些代碼,但對於像我這樣的初學者來說這是非常困難的(一半是底層代碼)。

我想知道是否有更好的方法,我可以在Python 2.7中做到這一點。

sum_2 = {} 
sum_3 = {} 
sum_6 = {} 
sum_7 = {} 
nums = [2,3,6,7] 
n_2 = 1 
n_3 = 1 
n_6 = 1 
n_7 = 1 
n_2_2 = n_2 
n_3_3 = n_3 
n_6_6 = n_6 
n_7_7 = n_7 
while n_7 < 10: 
    for x in nums: 
     sum_2[n_2] = x + x 
     sum_2[n_2_2] = sum_2[n_2] + x 
     n_2 = n_2 + 1 
     n_2_2 = n_2 + 1 

    for x in nums: 
     sum_3[n_3] = x + x 
     sum_3[n_3_3] = sum_3[n_3] + x 
     n_3 = n_3 + 1 
     n_3_3 = n_3 + 1 

    for x in nums: 
     sum_6[n_6] = x + x 
     sum_6[n_6_6] = sum_6[n_6] + x 
     n_6 = n_6 + 1 
     n_6_6 = n_6 + 1 

    for x in nums: 
     sum_7[n_7] = x + x 
     sum_7[n_7_7] = sum_7[n_7] + x 
     n_7 = n_7 + 1 
     n_7_7 = n_7 + 1 
else: 
    print sum_2 
    print sum_3 
    print sum_6 
    print sum_7 
+1

您可以使用itertools得到原始的數字排列,然後添加置換的金額給你列出和循環周圍一堆倍。 既然這是一個足球應用程序,你是否有想要得到多少總得分事件(即一系列你應該加在一起的多少數字?),100分似乎很多。另外,我希望你想爲每個開始的四個數字分配概率,因爲安全相對於實地目標等是不可能的,並且你可以通過輸出n個事件的總和,而不是輸出總和的概率 – Matt

+0

@馬特你可以給我一些示例代碼? – distaf

回答

2
nums = [2,3,6,7] 
x = [] 
for i in range(5): 
    for p in itertools.product(nums, repeat=i): 
     x.append(sum(p)) 
+0

感謝您的代碼。 **編輯,**當我創建一個新文件並運行它時,什麼都沒有發生。 – distaf

+0

@distaf嘗試在'for'-loop – pingul

+0

@pingul下面添加一個'print(x)',這樣做的竅門,謝謝。 – distaf

相關問題