乘法游戏Python

2024-05-21 02:15:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我应该用python编写一个程序,询问用户想要多少个乘法问题,然后随机地给他们一个值从1到10的问题。然后它会显示出他们的正确率。我的代码不断重复同一组数字,而且它也不会停留在用户要求的数字上。你能告诉我怎么了吗?

import random
import math

gamenumber = int(input("How many probems do you want?\n"))
num_1 = random.randint(1,10)
num_2 = random.randint(1,10)

def main():

    random.seed()
    count = 0
    while count < gamenumber:
        guess = int(input("What is " + str(num_1) + "x" + str(num_2) + "."))

        answer = str(num_1*num_2)
        correct = guess == answer

        if guess == answer:
            print("Correct!")
        else wrong:
            print("Sorry, the answer is", answer, ".")

        result = correct/wrong   

    print("You got ", "%.1f"%result, "of the problems.")

main()

Tags: 用户answerimportinputmaincount数字random
3条回答

您只分配给num_1num_2一次。他们的价值观永远不会改变;你的数字怎么能改变?此外,您不增加count,因此它的原始值总是与gamenumber进行比较。

你需要给你的两个变量分配一个新的随机数并增加你的计数器。

你提到的问题

My code keeps repeating the same set of numbers

这一点也不奇怪,因为您将num_1num_2(1)设置在main函数之外,并且(2)设置在主while循环之外。一个简单的修正是:

    while count < gamenumber:
        num_1 = random.randint(1,10)
        num_2 = random.randint(1,10)

My code doens't stop at the number asked for:

同样,当您从不增加count计数器时,也不奇怪:您总是有count < gamenumber。 一个简单的修正是:

    while count < gamenumber:
        num_1 = random.randint(1,10)
        num_2 = random.randint(1,10)
        guess = int(input("What is " + str(num_1) + "x" + str(num_2) + "."))
        answer = str(num_1*num_2)

        count += 1

这里,count += 1表示add 1 to count *in place*。你也可以做count = count + 1,但是当你创建一个你并不真正需要的临时变量(count + 1)时,效率会降低一些。

其他问题

  • 你从不定义wrong
  • 在函数外部定义gamenumber。虽然在本例中这不是问题,但是使用gamenumber作为main的参数会更容易,因为它是驱动游戏的变量。
  • 您的result是在循环中定义的。您可能需要为每个正确答案增加一个计数器,并在主循环之后打印结果。
  • 您的result计算为correct/wrong。虽然我确定您的意思是correct/gamenumber,但您必须格外小心:countgamenumber是整数,分隔整数与分隔浮点数不同。例如,2/3给出0,而2/float(3)给出0.6666666。所以,我们得在某个地方用浮子。
  • 你想打印一个百分比:你的result应该是result=correct*100./gamenumber
  • 您不希望gamenumber为0,否则您的result将未定义。

总之,你的main函数应该是

def main(gamenumber):
    random.seed()
    count = 0
    correct = 0
    while count < gamenumber:
        num_1 = random.randint(1,10)
        num_2 = random.randint(1,10)
        guess = int(input("What is " + str(num_1) + "x" + str(num_2) + "."))
        answer = str(num_1*num_2)
        count += 1

        if guess == answer:
            correct += 1
            print("Correct!")
        else wrong:
            print("Sorry, the answer is", answer, ".")

    if gamenumber > 1:
        result = correct * 100./gamenumber  

    print("You got ", "%.1f"%result, "of the problems.")

您忘记在循环中增加count,并且num_1num_2不会得到新值。

相关问题 更多 >