Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 乘法游戏蟒蛇_Python_Random_Multiplication - Fatal编程技术网

Python 乘法游戏蟒蛇

Python 乘法游戏蟒蛇,python,random,multiplication,Python,Random,Multiplication,我应该用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 ma

我应该用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()
随机导入
输入数学
gamenumber=int(输入(“您想要多少个问题?\n”))
num_1=random.randint(1,10)
num_2=random.randint(1,10)
def main():
random.seed()
计数=0
当计数<游戏编号时:
猜测=int(输入(“什么是”+str(num_1)+“x”+str(num_2)+”))
答案=str(num_1*num_2)
正确=猜测=答案
如果猜测==答案:
打印(“正确!”)
其他错误:
打印(“对不起,答案是”,答案是“.”)
结果=正确/错误
打印(“您得到了问题的”、“%.1f”%result“。)
main()

您只分配给
num_1
num_2
一次。他们的价值观永不改变;你的数字如何变化?此外,您不增加
计数
,因此其原始值始终与
游戏号
进行比较


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

对我来说最突出的问题是你有一个无限循环;你不会在任何地方增加
count

你忘记在循环中增加
count
,并且
num\u 1
num\u 2
不会得到新值

  • 在开始循环之前,只生成一次问题编号。每次在向用户提问之前,都需要生成num_1和num_2

  • 在初始化计数值之后,您永远不会更新它,因此您的循环将永远持续下去


  • Python是一种过程语言。它从上到下执行方法体中的语句。这一行:

    num\u 1=random.randint(1,10)

    是一个赋值语句。它并不将
    num_1
    等同于评估其值的随机过程;它通过调用
    random.randint(1,10)
    对表达式求值,并将该值赋给
    num\u 1
    ,一次

    必须强制再次调用random.randint以获得另一个随机数,并且每次要更改num_1的值时,必须让语句为num_1赋值

    import random
    import math
    
    “问题”的拼写是错误的

    将接下来的两行移动到循环中

    num_1 = random.randint(1,10)
    num_2 = random.randint(1,10)
    
    def main():
    
        random.seed()
        count = 0
        while count < gamenumber:
    
    这算是正确答案吗?应该是
    正确+=猜测==答案

           correct = guess == answer
    
            if guess == answer:
                print("Correct!")
    
    你的意思是数一数错误答案的数目吗<代码>错误+=猜测!=回答

           correct = guess == answer
    
            if guess == answer:
                print("Correct!")
    
    其他错误:
    是语法错误吗
    其他:#错误
    可能吗

            else wrong:
                print("Sorry, the answer is", answer, ".")
    
    这不是计算百分比的方法。您应该使用
    correct*100/gamenumber
    和dedent来匹配
    print()

    此外,您在任何地方都没有递增
    count
    。它更容易使用

    for count in range(gamenumber):
    
    而不是你提到的
    while
    循环

    问题 我的代码不断重复同一组数字

    这并不奇怪,因为您将
    num_1
    num_2
    (1)设置在
    main
    函数之外,以及(2)设置在main
    while
    循环之外。一个简单的修正是:

        while count < gamenumber:
            num_1 = random.randint(1,10)
            num_2 = random.randint(1,10)
    
        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
    表示
    将1添加到count*in-place*
    。您也可以执行
    count=count+1
    ,但由于您创建了一个实际上并不需要的临时变量(
    count+1
    ),因此效率会稍低一些

    其他问题
    • 您从未定义过错误的
    • 您可以在函数外部定义
      gamenumber
      。虽然在这种情况下这不是一个问题,但是使用
      gamenumber
      作为
      main
      的参数会更容易,因为它是驱动游戏的变量
    • 您的
      结果
      在循环中定义。您可能希望为每个好答案增加一个计数器,并在主循环后打印结果
    • 您的
      结果
      计算为
      正确/错误
      。虽然我确信你的意思是
      correct/gamenumber
      ,但你必须格外小心:
      count
      gamenumber
      是整数,除法整数与除法浮点数不同。例如,
      2/3
      给出
      0
      ,但
      2/float(3)
      给出
      0.66666
      。所以,我们必须在某个地方使用浮子
    • 您想打印一个百分比:您的
      结果
      应该是
      result=correct*100./gamenumber
    • 您不希望
      gamenumber
      为0,否则您的
      结果将无法定义
    总之,您的
    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.")
    
    def main(游戏编号):
    random.seed()
    计数=0
    正确=0
    当计数<游戏编号时:
    num_1=random.randint(1,10)
    num_2=random.randint(1,10)
    猜测=int(输入(“什么是”+str(num_1)+“x”+str(num_2)+”))
    答案=str(num_1*num_2)
    计数+=1
    如果猜测==答案:
    正确+=1
    打印(“正确!”)
    其他错误:
    打印(“对不起,答案是”,答案是“.”)
    如果游戏编号>1:
    结果=正确*100./gamenumber
    打印(“您得到了问题的”、“%.1f”%result“。)
    
    如何重新分配这些号码?真不敢相信我竟然忘了伯爵!这就解释了。但是我是python新手,我不知道如何在每次python询问乘法问题时将数字重新分配为随机数,就像第一次那样。好吧,太棒了,我知道了,现在每次数字都是随机的:)。但是,你能帮我找出用户正确回答问题的百分比吗?所以这就是他们得到它的次数除以它的总数
    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.")