Python 魔術師發牌問題的Python實現

2021-08-08 01:28:41 字數 942 閱讀 4940

## 建立兩個陣列,類似於迴圈鍊錶:

## 其中v_l陣列存放要按發牌前順序排放的數值,其初始化為任意值;

## 再建立乙個l陣列存放每次需要展示數值的位址,初始化為1:13;表示發牌前的排列順序;並動態調整,如需要展示1時,則牌為1的位址為1,需要展示2的時候,則牌為2的位址為3

n = int(input("please input n:" ))

v_l = [1]*n ## 初始化儲存數值

l = list(range(1,n+1)) ## 初始化位址數值

i = 0

## 標記數數的次數,初始化為0

pos = 1

## 標記該次要展現的數值,初始化為1

## 迴圈取數,沒進行一次,將位址數值l進行調整,使報過的位址放置在位址數值後面;若數數到了需要展現的數值時,則將該位址去掉,並將對應位址的v_lf賦值為pos

## 在大迴圈上,每次迴圈去掉位址數值的某個數,而該數表示的位址即為v_l的位址,其值即為第pos次要展示的數值

while len(l)>=1:

i = i+1

if i == pos:

v_l[l[0]-1] = pos

l = l[1:]

pos = pos+1

i = 0

else:

temp = l[:1]

l.extend(temp)

l = l[1:]

print(str(n)+'張牌的排列順序為' ,v_l)

please input n:13

13張牌的排列順序為 [1, 8, 2, 5, 10, 11, 12, 9, 4, 7, 6, 13]

魔術師發牌問題

說有乙個魔術師,他表演發牌的魔術,他將十三張黑桃牌放在一堆。然後開始數數,第一次,他數1,然後翻開第一張,果然是黑桃a,然後將黑桃a放到牌堆外。然後魔術師繼續數數,這次他數1,2,然後將數1的牌放到牌堆底,然後將數2的牌翻開,果然是黑桃2,然後將黑桃2放到一邊。繼續數1,2,3,果然每次都是對應的牌...

魔術師發牌問題

先搞清楚題意 注意按順序每翻到一張牌放到桌子上,不在手中了,其實是迴圈鍊錶的問題,可以在紙上模擬一下就可以得到牌開始的順序。1 一開始寫的比較麻煩 用兩個迴圈鍊錶,乙個放數字,乙個放序號,邊構造邊刪除,因為翻出來的牌已經放在一邊不在手上了,再用乙個card陣列存放開始的牌的順序。include st...

魔術師發牌問題

問題描述 魔術師手中有a 2 3 j q k十三張黑桃撲克牌。在表演魔術前,魔術師已經將他們按照一定的順序疊放好,有花色的一面朝下。魔術表演過程為 一開始,魔術師數1,然後把最上面的那張牌翻過來,是黑桃a 然後將其放到桌面上 第二次,魔術師數1 2 將第一張牌放到這些牌的最下面,將第二張牌翻轉過來,...