首页 > 解决方案 > 我如何使用函数对两个数组进行洗牌,以便打印出随机卡片

问题描述

我希望它通过洗牌来打印一张随机卡片,例如 4 of heart 这是我当前的代码,它一直打印 None of None

提前致谢


def exchange(SUITS, i, suits):
    temp = SUITS[i]
    SUITS[i] = SUITS[suits]
    SUITS[suits] = temp
    return SUITS[suits]

def shuffle():
    SUITS = ['Clubs', 'Diamonds', 'Hearts' , 'Spades']
    n = len(SUITS)
    for i in range(n):
        suits = random.randrange(0,n)
        exchange(SUITS,i, suits)

def exchange2(RANKS, i, ranks):
    Temp = RANKS[i]
    RANKS[i] = RANKS[ranks]
    RANKS[ranks] = Temp
    return RANKS[ranks]

def shuffle2():
    RANKS = ['2', ' 3', '4', '5', '6' , '7' , '8', '9','10',
        'Jack', 'Queen', 'King','Ace']
    n = len(RANKS)
    for i in range(n):
        ranks = random.randrange(0,n)
        exchange2(RANKS,i, ranks)
        
w = shuffle()
z = shuffle2()


print(str(z) + ' of ' + str(w))

标签: pythonarraysfunctionshuffle

解决方案


根据我在您的问题陈述中的理解,我想您可以简单地执行以下操作:

import random

def shuffle():
    SUITS = ['Clubs', 'Diamonds', 'Hearts' , 'Spades']
    RANKS = ['2', ' 3', '4', '5', '6' , '7' , '8', '9','10',
        'Jack', 'Queen', 'King','Ace']
    randomSuit = random.randrange(0, len(SUITS))
    randomRank = random.randrange(0, len(RANKS))
    print(RANKS[randomRank] + " of " + SUITS[randomSuit])
    
    
shuffle()

让我知道这是否是您所期望的。

如果你想从不同的函数中得到等级和花色,那么也可以稍微修改一下来实现。

import random

def shuffleRank():
    RANKS = ['2', ' 3', '4', '5', '6' , '7' , '8', '9','10',
        'Jack', 'Queen', 'King','Ace']
    randomRank = random.randrange(0, len(RANKS))
    return RANKS[randomRank] 
    
def shuffleSuit():
    SUITS = ['Clubs', 'Diamonds', 'Hearts' , 'Spades']
    randomSuit = random.randrange(0, len(SUITS))
    return SUITS[randomSuit]


print (shuffleRank() + " of " + shuffleSuit())

推荐阅读