【问题标题】:Not sure how to override a random不确定如何覆盖随机
【发布时间】:2015-01-25 05:10:34
【问题描述】:
import random
import time
import math
import sys

card_numbers = [1,2,3,4,5,6,7,8,9]
card_suite = ["of hearts", "of diamonds", "of clubs", "of spades", "Queen", "King", "Jack", "Ace"] #4,5,6,7
random_number = random.choice(card_numbers)
random_number2 = random.choice(card_numbers)
random_number3 = random.choice(card_numbers)
random_suite = random.choice(card_suite)

numberadd = random_number + random_number2
numberadd2 = random_number + random_number2 + random_number3

def setup():
    setupinput = raw_input("Type deal to deal the cards!")
    if setupinput == "deal":
        deal()
    elif setupinput != "deal":
        goodbye()
    else:
        print "Invalid Syntax!" 
        sys.exit(0)

def deal():
    print "Your first card is... ", random_number, random_suite
    print "Your second card is... ", random_number2, random_suite
    if numberadd >= 21:
        retry()
    else:
        thirdround()

def thirdround():
    thirdroundinput = raw_input("Would you like another card?")
    if thirdroundinput == "yes":
        print "Your next card is... ", random_number3, random_suite
        if numberadd2 >= 21:
            retry()
        else:
            print "You win! Your total was... ", numberadd2
            retry()
    elif thirdroundinput == "no":
        print "Okay... safe! Your total was... ", numberadd
    else:
        print "Invalid Syntax!"
        sys.exit(0)

def goodbye():
    print "Okay... goodbye!"
    sys.exit(0)

def retry():
    retryinput = raw_input("Would you like to try again?")
    if retryinput == "yes":
        setup()
    elif retryinput != "yes":
        goodbye()
    else:
        print "Invalid Syntax!"
        sys.exit(0)

def ifblacklist():
    if random_number or random_number2 or random_number3 == "Queen" or "King" or "Jack":
setup()

全新的编码,刚刚完成编码(几乎作为一个初学者项目完成)并且想知道,如果随机套件选择王牌,王牌,王后或杰克,还是我让它输出数字10(或 1 为王牌)?

谢谢

为了澄清,ifblacklist 函数是我尝试输出数字 10,并且想知道是否有人可以指出我完成它/重写的正确方向

【问题讨论】:

  • 我认为您应该将suits 更改为仅包含名称的数组:[ 'hearts', 'spades', 'diamonds', 'clubs']。此外,您应该使用ranks = ['1', '2', '3', '4', '5', '6', '7','8','9','10','J','Q','K','A']。获取 0-3 的随机数表示花色,0-13 表示等级。
  • 你想达到什么目的。代码似乎不完整。例如,你在哪里打电话给ifblacklist()?你有main() 方法或类似的方法吗?
  • 糟糕,我的意思是 0-12(其中有一个 1...)通过索引引用对象比比较字符串文字更有效和抽象。
  • 期望的输出是什么?能具体点吗?
  • @howaboutNO 所需的输出当前获得两张卡,如果需要,第三张。但我想知道,如果其中一张牌是 J、K 或 Q,我将如何确保它们的数字是 10。

标签: python python-2.7 random


【解决方案1】:

首先,所有else块都是这样的;

retryinput = raw_input("Would you like to try again?")
    if retryinput == "yes":
        setup()
    elif retryinput != "yes":
        goodbye()
    else:
        print "Invalid Syntax!"
        sys.exit(0)

是不必要的。因为您的程序从不处理 else ,因为 elif retryinput != "yes": 包含所有情况。所以你应该删除那些没有用的 else 块或 你应该像这样改变它们;

retryinput = raw_input("Would you like to try again?")
    if retryinput == "yes":
        setup()
    elif retryinput == "no":
        goodbye()
    else:
        print "Invalid Syntax!"
        sys.exit(0)

二、这个函数

def ifblacklist():
   if random_number or random_number2 or random_number3 == "Queen" or "King" or "Jack":
setup()

应该是;

if random_number=="Queen" or random_number2=="King" or random_number3=="Jack":
    do something

否则它总是True,你应该写下所有的条件/等式。您将如何确保这些数字是 10;

你可以这样做;制作一个字典并像这样放置键/值;

mydict={"Queen":10,"King":10...}

然后在这个字典中搜索你的卡片,并将它们的值相加。

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 2019-10-03
    • 2018-02-08
    • 2020-06-24
    • 2012-02-24
    • 2021-12-31
    • 1970-01-01
    • 2017-07-07
    • 2011-05-29
    相关资源
    最近更新 更多