【问题标题】:Is it possible to get 3 specific randoms in specific order in Python?是否可以在 Python 中按特定顺序获得 3 个特定随机数?
【发布时间】:2019-11-03 00:01:44
【问题描述】:

任务要求制作一个剪刀石头布游戏,用户选择一个选项,然后random.randint(0,2) 为计算机生成随机选项。

我已经写了一个工作游戏(芬兰语的变量、函数和打印):

import random

kierrokset = 0
voitot = 0
tasapelit = 0

def arvoTietokone():
    tietokone = random.randint(0,2)
    if tietokone == 0:
        print("tietokone valitsi: Jalka")
        return tietokone
    elif tietokone == 1:
        print("tietokone valitsi: Ydinase")
        return tietokone
    else:
        print("tietokone valitsi: Torakka")
        return tietokone

def arvoVoittaja(pelaaja, tietokone):
    global kierrokset, voitot, tasapelit
    if pelaaja == "Jalka":
        if tietokone == 0:
            print("Tasapeli!")
            tasapelit += 1
            kierrokset += 1

        elif tietokone == 1:
            print("Hävisit!")
            kierrokset += 1

        else:
            print("Voitit!")
            voitot += 1
            kierrokset += 1

    elif pelaaja == "Ydinase":
        if tietokone == 0:
            print("Voitit!")
            voitot += 1
            kierrokset += 1

        elif tietokone == 1:
            print("Tasapeli!")
            tasapelit += 1
            kierrokset += 1

        else:
            print("Hävisit!")
            kierrokset += 1

    elif pelaaja == "Torakka":
        if tietokone == 0:
            print("Hävisit!")
            kierrokset += 1

        elif tietokone == 1:
            print("Voitit!")
            voitot += 1
            kierrokset += 1
        else:
            print("Tasapeli!")
            tasapelit += 1
            kierrokset += 1

while True:

    pelaaja = input("Jalka, Ydinase vai Torakka? (Lopeta lopettaa): ")

    if pelaaja == "Lopeta":
        print("Pelasit",kierrokset,"joista voitit",voitot,"ja pelasit tasan",tasapelit,"peliä.")
        break

    print("Sinä valitsit: ",pelaaja)

    tietokone = arvoTietokone()

    arvoVoittaja(pelaaja, tietokone)

我对代码本身没有任何问题,但关键在于:

课程使用的测试平台对代码进行 3 次不同的测试,每次选择的计算机都必须完全不同。在 Test1 计算机选择必须是 Rock,在 Test2 计算机选择必须是 Paper,在 Test3 计算机选择必须是 Scissors。

How can you produce the choices exactly in that order (Rock, Paper, Scissors) when the choice is generated on random?

就好像任务需要 3 个特定顺序的特定随机数。

这在逻辑上是否可行,还是课程任务无效/设计不当?

我已经向处理课程的老师发送了反馈,但我还没有收到回复。

【问题讨论】:

  • 从逻辑上讲,预定义的随机值是没有意义的。从技术上讲,这当然是可能的,例如通过用其他东西替换代码中的“randint”或在实际程序运行之前用适当的值(必须首先找到)调用“random.seed”来操纵随机生成器使其不是随机的。如果程序在回合之间关闭并重新打开,它还需要将其间的状态存储在文件中。
  • 您的课程中有文件或网络功能吗?也许该任务根本不需要随机性,而是要求您将程序的状态存储在文件中。 (或者,您可以使用网络服务来存储状态,但这可能超出了家庭作业的范围。)
  • @phihag 文件在前一章学习过,但是平台不允许外部文件,它只是一个预先准备好的提交表单文件,你写代码然后点击“执行”课程平台运行测试以检查代码是否完成任务。我们不会从我们的电脑上提交实际文件,这些文件和其他一切都在平台服务器上运行。我们只需将代码填写到“编辑器”表单中。在任务简报开始时,任务确实说“电脑选择是随机生成的”。
  • @MichaelButscher 是的,但是课程平台只是一个提交字段“编辑器”,我们只是在其中编写代码然后单击“执行”以查看它是否通过测试。无法使用外部文件,文件或测试等所有内容都在平台端运行。我认为任务/课程平台在设计上有错误。

标签: python python-3.x random


【解决方案1】:

好的,我已经成功通过了 Python 课程。原来他们的课程平台存在设计错误,因此这项任务在逻辑上是不可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多