【问题标题】:How can I make a loop with changing random numbers?如何通过更改随机数进行循环?
【发布时间】:2023-03-11 20:28:01
【问题描述】:

我想制作一款能够生成乘法方程的游戏。我想让你得到一个简单的乘法方程(例如:5*6),当你回答它时,程序会告诉你是否正确,然后会转到下一个随机方程。 我知道如何用许多不同的随机数来制作它,但这会使代码很长而且不优雅。 我需要一种方法来每次生成两个不同的随机数,而不必建立一个数据库,比如说 20 个不同的随机数。有谁知道该怎么做? 谢谢!

这是我目前写的代码:

import random
import sys
import os

random_num1 = random.randrange(1, 10)
random_num2 = random.randrange(1, 10)

print(random_num1, 'X', random_num2, '=', )

def multiplication(random_num1, random_num2):
    sumNum = random_num1 * random_num2
    return sumNum

one = input()

if(int(one) == multiplication(random_num1, random_num2)):
    print('true')
else:
    print('false')

【问题讨论】:

  • “我需要一种方法来每次生成两个不同的随机数”我想你是说你不希望程序生成它已经生成的一对数字(在这个程序运行)。那是对的吗?如果是这种情况,更好的设计是在用户上次回答错误时允许重复。

标签: python python-3.x loops random while-loop


【解决方案1】:

将所有代码放入一个循环中,该循环使用while True: 永不结束(不要忘记将其中的所有内容向右移动一个标签)。

建议将def multiplication 移出while 循环。

【讨论】:

  • 非常感谢!如果我想专门运行它 10 次,我该怎么做?
  • 然后用计数器跟踪。设置counter = 0 然后像这样执行while 循环。 while counter < 10: 然后在while 循环内增加counter 像这样counter += 1
【解决方案2】:

您可以使用函数和 while 循环轻松完成。比方说,你想玩 10 次,想要最后的分数。

def multiplication(random_num1, random_num2):
    sumNum = random_num1 * random_num2
    # Indentation fixed
    return sumNum

def play() : 
    random_num1 = random.randrange(1, 10)
    random_num2 = random.randrange(1, 10)

    print(random_num1, 'X', random_num2, '=', )

    one = input()

    if(int(one) == multiplication(random_num1, random_num2)):
       return 1
    else:
       return 0

if __name__ == '__main__' :
    number_of_play = 10
    cpt = 0
    result = 0
    while cpt < number_of_play :
        cpt+=1
        cpt += play()
    print "Wow you perform {} out of {}".format(result, number_of_play)

【讨论】:

  • 谢谢!但我没有看懂很多代码......“def play”的部分和最后的“if”语句的部分。你能给我解释一下吗?
  • def play() 将创建对应于一场比赛的函数:打印两个数字,询问结果并检查用户是否获胜。我们将在 while 循环中使用这个函数并调用它十次。我们在“结果”中得到每次尝试的结果。最后一个 if 是 python 中的一个技巧,您可以在此处了解更多信息:effbot.org/pyfaq/tutor-what-is-if-name-main-for.htm
【解决方案3】:

这是我制作的一个简单示例(用“try”语句编辑):

from random import randint

while 1:
    numA = randint(0,9)
    numB = randint(0,9)
    result = numA * numB

    print("\nFirst number:", numA)
    print("Second number:", numB)

    while 1: 
        try: 
            userResult = int(input("Insert your multiplication result: ")) 
            break
        except: 
            print("Error! The given digit is not a number. Retry :")

    if userResult == result:
        print("Bravo! That's right!")
    else:
        print("Damn! That's wrong!")

我已经尽量说清楚了。希望对你有用。

【讨论】:

  • 我不清楚,谢谢。但是现在我遇到了一个不同的问题,如果用户写的不是数字,那么它就会出现错误。我认为这是因为输入之前的“int”,它也发生在我的代码中。你知道解决这个问题的方法吗?
  • 当然...这是检查用户数字的简单方法。
  • while 1: try: userResult = int(input("Insert your multiplication result: ")) break #if "int()" 不报错,break 将被执行,除了: print("错误!给定的数字不是数字。重试:)")
  • "try" 语句捕获错误,而不是关闭程序,它将执行 "except" 语句中的内容(在这种情况下它将打印一行)。所有的行都必须放在一个无限循环中(while 1),只有当用户添加一个数字时,你才会“打破”循环
  • 它现在对我有用...有没有机会像在 python 中一样编写代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多