【问题标题】:How do I have a program reference an internal random result and apply it to a list to print a result?如何让程序引用内部随机结果并将其应用于列表以打印结果?
【发布时间】:2014-05-26 18:22:49
【问题描述】:

好的,我需要一些帮助。我正在尝试编写一个在内部滚动骰子的程序(randrange),该程序引用一个列表,然后将结果打印到屏幕上

示例:用户输入“1”,激活掷骰子。该程序滚动一个 2 并检查一个列表以查看 2 的含义。 2 表示中等,因此它会打印“中等”

但是,我不知道在哪里可以找到这方面的教程(因为我什至不知道自己要搜索什么),而且我问的每个人都对这个问题感到困惑。所以我带着一组粘贴的代码来找你。这是一个粘贴箱以便更好地查看:http://pastebin.com/PGEmNqTm

import random

def Main() :

    print TESTING
    print
    print
    print "1 1d4"

    sum = raw_input("> ")

    if sum == '1':
        numberr = random.randrange(1, 5)
            if numberr = 1
                print "Small"
            elif numberr = 2
                print "Medium"
            elif numberr = 3
                print "Large"
            elif numberr = 4
                print "Huge"

while 1:
    input = raw_input("Press Enter to continue or q to quit").upper()
    if input == 'Q': break
    elif input == '' : Main()

【问题讨论】:

  • 我觉得我可能需要研究字典,但我不确定是否有必要。
  • 你的感觉是正确的。而不是ifs,你应该做类似myNum = ({1:'Small', 2:'Medium', 3:'Large', 4:'Huge'})的事情 - 试试看这个:docs.python.org/library/stdtypes.html#dict
  • raw_imput?您的用户输入也在一个名为sum的变量中?你的支票也需要,== 不是=:if/elif 的末尾。为什么不将您的代码粘贴到此处而不是输入它。也不确定您的问题是什么,您想要什么,以及您有什么?
  • 好的...但是...如何在滚动后打印字典结果?我正在阅读该文档,但是...我不知道如何应用它...
  • @rm 我确实将其粘贴到此处,但直到我完成了整个“4 个空格”的工作,它才将其识别为代码。我是新来的,所以我可能会为此遗漏一些东西。我认为他们需要 == 但代码无论如何都无法正常工作,所以我想我会试一试。

标签: python random dice


【解决方案1】:

也许你可以借鉴这个例子:

import random

def roll(num):
    return  {
        1: "Small",
        2: "Medium",
        3: "Large",
        4: "Huge",
        5: "Huge+",
        6: "Huge++"
    }[num]

print roll(random.randrange(1, 7))

【讨论】:

  • random.randrange(1, 6) 永远不会返回 6
【解决方案2】:

除了一些小细节之外,您的代码看起来还不错。

这些是:

  • 您的 if numberr == x: 行不应缩进,因为它们不属于 一个新的区块。

  • 在进行测试时需要将= 符号加倍:if number == 1:

  • if 需要一个冒号(您知道,但在某些 行)。

  • raw_input 不是raw_imput

  • 引用“TESTING”

以下是这些修复的代码:

import random

def Main() :

    print "TESTING"
    print
    print
    print "1 1d4"

    sum = raw_input("> ")

    if sum == '1':
        numberr = random.randrange(1, 5)
        if numberr == 1:
            print "Small"
        elif numberr == 2:
            print "Medium"
        elif numberr == 3:
            print "Large"
        elif numberr == 4:
            print "Huge"

while 1:
    input = raw_input("Press Enter to continue or q to quit").upper()
    if input == 'Q': break
    elif input == '' : Main()

所以我想说你似乎已经做对了。

(Vishal 的建议也很好)

【讨论】:

  • 读完了 好的,所以这主要是一组简单的错误,那么?我跑了你的,它工作得很好,所以我猜它只是因为一些事情。好吧,那我就不难过了,哈!非常感谢!
【解决方案3】:

试试这样的:

import random

myNum = ({1:'Small', 2:'Medium', 3:'Large', 4:'Huge'})

def main():
    mysum = raw_input("> ")
    if mysum == '1':
        numberr = random.randrange(1,5)
        print(myNum[numberr])

while 1:
    myinput = raw_input("Press Enter to continue or q to quit")
    if myinput == 'Q':
        break
    elif myinput == '' :
        main()

小心命名你的变量名保留关键字!

【讨论】:

  • 好的,这就是你如何使用更面向字典的格式的方式...好吧,知道这很有帮助,谢谢!
猜你喜欢
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 2017-11-30
  • 2014-06-03
相关资源
最近更新 更多