【问题标题】:How do I divide without remainder, if I take random integers?如果我取随机整数,如何无余数除法?
【发布时间】:2021-02-15 22:10:32
【问题描述】:

我还是个编程新手。 我想编写一个完整的脚本,我可以在其中由操作员决定并获得 2 个随机数等等。 它有效,但如果我想分配一些东西,有一些计算,如 59:6=,逗号后有 9 位数字。 毕竟我确实以分割部分的代码结束了

def division():
    x = randint(1, 100)
    y = randint(1, 10)

    a = int(input("Task: What is " + str(x) + ":" + str(y) + "?\n"))
    b = x / y
    g = round(b, 0)

    if a == g:
        print("Nice!")
        start()
    else:
        print("Wrong! The right answer is " + str(g))
        start()

这不是我所知道的最佳解决方案,但我只想进行没有任何余数的计算,但我不知道如何。 有什么建议吗?

我的整个代码,如果你想测试它:

from random import randint


def plus():
    x = randint(1, 1000)
    y = randint(1, 1000)

    a = int(input("Task: What is " + str(x) + "+" + str(y) + "?\n"))
    b = x + y

    if a == x+y:
        print("Nice!")
        start()
    else:
        print("Wrong! The right answer is " + str(b))
        start()


def minus():
    x = randint(1, 100)
    y = randint(1, 100)

    if x < y:
        minus()
    else:
        print()

    a = int(input("Task: What is " + str(x) + "-" + str(y) + "?\n"))
    b = x - y

    if a == x-y:
        print("Nice!")
        start()
    else:
        print("Wrong! The right answer is " + str(b))
        start()


def multiplication():
    x = randint(1, 10)
    y = randint(1, 10)

    a = int(input("Task: What is " + str(x) + "*" + str(y) + "?\n"))
    b = x * y

    if a == x*y:
        print("Nice!")
        start()
    else:
        print("Wrong! The right answer is " + str(b))
        start()


def division():
    x = randint(1, 100)
    y = randint(1, 10)

    a = int(input("Task: What is " + str(x) + ":" + str(y) + "?\n"))
    b = x / y
    g = round(b, 0)

    if a == g:
        print("Nice!")
        start()
    else:
        print("Wrong! The right answer is " + str(g))
        start()


def start():
    v = input("Which operator do you wanna use? (+, -, *, :): ")

    if v == '+':
        plus()
    elif v == '-':
        minus()
    elif v == '*':
        multiplication()
    elif v == ':':
        division()
    else:
        print(">>> End . . .")


start()

【问题讨论】:

  • 您想避免得到不是 x 因子的 y(例如,如果 x 是 100,那么 y 应该是 100、50、25、20 ...)?
  • 随机选择除法的结果和一个除数,然后将它们相乘得到你的第一个数字。例如,如果您生成 6 和 4,则要求 24 / 6。
  • 是的,正是我想做的事

标签: python python-3.x math random divide


【解决方案1】:

随机选择除法的结果和一个除数,然后将它们相乘以获得您的第一个数字。例如,如果您生成 6 和 4,则要求 24 / 6。

def division():
    b = randint(1, 10)
    y = randint(1, 10)
     
    x = b * y

    a = int(input("Task: What is " + str(x) + ":" + str(y) + "?\n"))

    if a == b:
        print("Nice!")
        start()
    else:
        print("Wrong! The right answer is " + str(b))
        start()

【讨论】:

    【解决方案2】:

    您正在寻找 div 运算符,它在 python 中是 // 例如:5 // 2 == 2

    编辑: 我再次阅读了您的问题,在这种情况下,您需要以稍微不同的方式生成随机数

    g = randint(1, 10)
    y = randint(1, 10)
    x = g * y
    

    所以答案 g 是在 x 之前计算的,y 之后是随机的 y,g 你计算的 x 有界在 (1,100) 中

    【讨论】:

    • 请再读一遍这个问题,这根本不是 OP 想要的:他不希望将商不是整数的数字用作问题。
    • 我的意思是是的,但不是......我说的是不是 5/2 = 2......但有一个逗号......我想让 python 不作为像这样的计算,只有像 54/9 或 32/8 这样的明确的计算
    • 这是现在的预期,但这个答案已经给出......
    • @Thierry Lathuile 是的,你正在编辑,所以我看不到
    【解决方案3】:

    提供的另一种选择(这里用处不大)是使用fractions 模块:您可以给它一个分子和一个分母(或一个字符串分数),它会自动简化分数:

    >>> fractions.Fraction(32, 8)
    Fraction(4, 1)
    >>> fractions.Fraction(32, 9)
    Fraction(32, 9)
    >>> fractions.Fraction(32, 10)
    Fraction(16, 5)
    

    化简为分母1 的分数是整数。

    【讨论】:

    • 嘿,我想简化它,但另一方面,我希望没有逗号,所以分区必须是干净的,但感谢你尝试过。
    • 我不知道你在说什么。如果分数的分母是 1,你可以只取分子,这就是你的结果。没有小数部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2015-12-23
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多