【问题标题】:Rolling dice script Python掷骰子脚本 Python
【发布时间】:2022-01-21 18:29:11
【问题描述】:

感谢您阅读本文。

我试图“重置”下面的脚本,每次用户在掷骰子句子上回答“否”时,脚本都会回到开头。但是,我不知道出了什么问题。该脚本包括选择您要滚动的骰子并获得一个随机数。现在,我无法运行脚本,不再工作了。

import random


def d4():
    rolagemD4 = str(random.randint(1, 4))
    retorno = input("resultado do d4: " + rolagemD4 + "\n Gostaria de rolar outro D4, Sim(S) ou Não(N)?")
    if (retorno == "S") or (retorno == "Sim") or (retorno == "sim"):
        rolagemD4 = 0
        d4()
    if (retorno == "N") or (retorno == "Não") or (retorno == "Nao") or (retorno == "nao"):
        principal()

def d6():
    rolagemD6 = str(random.randint(1, 6))
    retorno = input("resultado do d6: " + rolagemD6 + "\n Gostaria de rolar outro D6, Sim(S) ou Não(N)?")
    if (retorno == "S") or (retorno == "Sim") or (retorno == "sim"):
        rolagemD6 = 0
        d6()
    if (retorno == "N") or (retorno == "Não") or (retorno == "Nao") or (retorno == "nao"):
        principal()

def d8():
    rolagemD8 = str(random.randint(1, 8))
    retorno = input("resultado do d8: " + rolagemD8 + "\n Gostaria de rolar outro D8, Sim(S) ou Não(N)?")
    if (retorno == "S") or (retorno == "Sim") or (retorno == "sim"):
        rolagemD8 = 0
        d8()
    if (retorno == "N") or (retorno == "Não") or (retorno == "Nao") or (retorno == "nao"):
        principal()

def d10():
    rolagemD10 = str(random.randint(1, 10))
    retorno = input("resultado do d10: " + rolagemD10 + "\n Gostaria de rolar outro D10, Sim(S) ou Não(N)?")
    if (retorno == "S") or (retorno == "Sim") or (retorno == "sim"):
        rolagemD10 = 0
        d10()
    if (retorno == "N") or (retorno == "Não") or (retorno == "Nao") or (retorno == "nao"):
        principal()

def d12():
    rolagemD12 = str(random.randint(1, 12))
    retorno = input("resultado do d12: " + rolagemD12 + "\n Gostaria de rolar outro D12, Sim(S) ou Não(N)?")
    if (retorno == "S") or (retorno == "Sim") or (retorno == "sim"):
        rolagemD12 = 0
        d12()
    if (retorno == "N") or (retorno == "Não") or (retorno == "Nao") or (retorno == "nao"):
        principal()

def d20():
    rolagemD20 = str(random.randint(1, 20))
    retorno = input("resultado do d20: " + rolagemD20 + "\n Gostaria de rolar outro D20, Sim(S) ou Não(N)?")
    if (retorno == "S") or (retorno == "Sim") or (retorno == "sim"):
        rolagemD20 = 0
        d20()
    if (retorno == "N") or (retorno == "Não") or (retorno == "Nao") or (retorno == "nao"):
        principal()

def d100():
    rolagemD100 = str(random.randint(1, 100))
    retorno = input("resultado do d100: " + rolagemD100 + "\n Gostaria de rolar outro D100, Sim(S) ou Não(N)?")
    if (retorno == "S") or (retorno == "Sim") or (retorno == "sim"):
        rolagemD100 = 0
        d100()
    if (retorno == "N") or (retorno == "Não") or (retorno == "Nao") or (retorno == "nao"):
        principal()

def principal():
    print("Gostaria de jogar dados? : ")
    print("1: dado de 4 faces")
    print("2: dado de 6 faces")
    print("3: dado de 8 faces")
    print("4: dado de 10 faces")
    print("5: dado de 12 faces")
    print("6: dado de 20 faces")
    print("7: dado de 100 faces \n")
    print("8: Não quero jogar dados")

    choice = input()

    principal()

    if choice == "1": d4()
    if choice == "2": d6()
    if choice == "3": d8()
    if choice == "4": d10()
    if choice == "5": d12()
    if choice == "6": d20()
    if choice == "7": d100()
    if choice == "8": exit()
    else :
        print ("Opção Não cadastrada, selecione uma válida \n")
        principal()

【问题讨论】:

  • 你的函数看起来都差不多,除了 randint 为什么不把那个值传递给 1 个函数,然后把它改成一个字符串并插入到 retorno 中
  • 现在,我无法运行脚本,不再工作了 说“它不起作用”并没有多大帮助。相反,请告诉我们程序实际上做了什么。你有错误吗?程序是否运行,但您得到意想不到的结果?你没有得到任何结果吗?
  • 在你选择一个选项后,你有一个 principal() 所以无限循环。

标签: python dice


【解决方案1】:
import random
def d(face):
    rolagem = str(random.randint(1, face))
    retorno = input("resultado do d"+str(face)+": " + rolagem + "\n Gostaria de rolar outro D"+str(face)+", Sim(S) ou Não(N)?")
    if (retorno == "S") or (retorno == "Sim") or (retorno == "sim"):
        rolagem = 0
        d(face)
    if (retorno == "N") or (retorno == "Não") or (retorno == "Nao") or (retorno == "nao"):
        principal()

def principal():
    print("Gostaria de jogar dados? : ")
    faces=[4,6,8,10,12,20,100]
    for index,value in enumerate(faces):
       print(str(index+1)+": dado de "+str(value)+" faces")
    print("8: Não quero jogar dados"+"\n")

    choice = int(input("Pick one"))
    print(choice)
    
    if 1<= choice <8: 
        d(faces[choice-1])
    else if choice ==8: 
        exit()
    else :
        print ("Opção Não cadastrada, selecione uma válida \n")
        principal()
    

您可以对其进行重新设计,以便您只需要 1 个函数即可传递面值。选择后的 principal() 进行了无限循环。为所有面孔制作了一个列表,以便您可以访问它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2021-06-16
    • 2013-03-17
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多