如何改进我的部门计划?(简单Python)

如何改进我的部门计划?(简单Python),python,division,Python,Division,我目前正在尝试制作一个除法程序,它会询问随机除法问题。有两件事阻止了我这么做:1)我的程序认为所有东西除以某物总是0。e、 g.8除以2=0。2) 我需要不带浮点数的除法,比如144/5。这就是: import sys import random guessRight=0 guessWrong=0 while True: num1 = random.randint(0,12) #probably messed up here num2 = random.randin

我目前正在尝试制作一个除法程序,它会询问随机除法问题。有两件事阻止了我这么做:1)我的程序认为所有东西除以某物总是0。e、 g.8除以2=0。2) 我需要不带浮点数的除法,比如144/5。这就是:

import sys 
import random

guessRight=0
guessWrong=0

while True: 
    num1 = random.randint(0,12)    #probably messed up here
    num2 = random.randint(12,144)  #and here  
    print "To exit this game type 'exit'" 
    theyputinstuffhere = raw_input("What is " + str(num2) + " divided by " + str(num1) + "? ") #maybe messed up here


    if theyputinstuffhere == "exit":
        print "Now exiting game!"
        sys.exit()

    elif int(theyputinstuffhere) == num1/num2: #maybe messed this whole elif too
        print num1/num2
        print "Correct!"
        guessRight=guessRight+1
        print "You have gotten " + str(guessRight) + " answer(s) right and you got " + str(guessWrong) + " wrong"
    else:
        print "Wrong! The correct answer is: " + str(num1/num2)
        guessWrong=guessWrong+1
        print "You have gotten " + str(guessRight) + " answer(s) right and you got " + str(guessWrong) + " wrong"
这是它当前打印的内容:

To exit this game type 'exit'
What is 34 divided by 11? #I type any number (e.g. 3)
Wrong! The correct answer is: 0
You have gotten 0 answer(s) right and you got 1 wrong

如果您要求num2除以num1,那么您需要在代码中使用
num2/num1
,而不是
num1/num2
。这也是为什么您总是得到
0
num1
总是小于
num2
,所以
num1/num2
在使用整数除法时将
0
(这是Python 2.x上除法整数的默认值)

要避免144/5这样的问题,并消除零除问题,您可以使用以下方法:

num1 = random.randint(1,12)
num2 = random.randint(1,12) * num1

如果您要求num2除以num1,那么您需要在代码中使用
num2/num1
,而不是
num1/num2
。这也是为什么您总是得到
0
num1
总是小于
num2
,所以
num1/num2
在使用整数除法时将
0
(这是Python 2.x上除法整数的默认值)

要避免144/5这样的问题,并消除零除问题,您可以使用以下方法:

num1 = random.randint(1,12)
num2 = random.randint(1,12) * num1

num1
将始终小于
num2
。您可能混淆了这些值。请注意,提示(“num2除以num1”)和检查(num1/num2)所说的不是同一件事。@Matthias看着输入行,似乎就是这样。在该行中,它打印的
/
num1
将始终小于
num2
。您可能混淆了这些值。请注意,提示(“num2除以num1”)和检查(num1/num2)所说的不是同一件事。@Matthias看着输入行,似乎就是这样。在该行中,它打印
/
.F.J。我明白我的错误,但每当它问我类似144/0的问题时,当我回答它时,它会说:回溯(最近一次调用最后一次):文件“/division.py”,第19行,在elif int中(theyputintufhere)==num2/num1:ZeroDivisionError:integer division或模乘零也会问一些奇怪的问题,比如144/5,这是。。。不是我想要的,我想要的是144/12或24/6或类似的东西……我明白了,将代码第八行的0改为1可以解决“ZeroDivision错误”。但它仍然会问一些奇怪的问题@user2468523执行144/0操作时会抛出一个错误,因为这是一个非法的数学操作。任何数字/0都不存在f.J。我明白我的错误,但每当它问我类似144/0的问题时,当我回答它时,它会说:回溯(最近一次调用最后一次):文件“/division.py”,第19行,在elif int中(theyputintufhere)==num2/num1:ZeroDivisionError:integer division或模乘零也会问一些奇怪的问题,比如144/5,这是。。。不是我想要的,我想要的是144/12或24/6或类似的东西……我明白了,将代码第八行的0改为1可以解决“ZeroDivision错误”。但它仍然会问一些奇怪的问题@user2468523执行144/0操作时会抛出一个错误,因为这是一个非法的数学操作。任何数字/0都不存在