You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确保Python中num2是num1的因数以实现整数除法测试?

除法测试程序:确保除数是被除数因数的解决方案

你的代码目前仅保证被除数num1大于等于除数num2,但未添加逻辑确保num2是num1的因数,因此会出现除法结果为小数的情况。以下是两种可行的修改方案:

方案1:循环生成符合条件的随机数

通过while循环持续生成num1和num2,直到满足num1 >= num2且num1 % num2 == 0(余数为0表示整除):

import random
import replit
from csinsc import *

def add(num1,num2):
  return num1 + num2
def subtract(num1,num2):
  return num1 - num2
def multiply(num1,num2):
  return num1 * num2
def divide(num1,num2):
  return num1 / num2

label .startstart
score = 0
amount = 0

label .start
if amount != 10:
    # 循环生成直到num1能被num2整除且num1 >= num2
    num1 = random.randint(1,10)
    num2 = random.randint(1,10)
    while num1 < num2 or num1 % num2 != 0:
        num1 = random.randint(1,10)
        num2 = random.randint(1,10)
    
    print("what is ", num1 ,'÷', num2,)
    p = int(input("ANSWER:  "))
    a = divide(num1,num2)
    if p == a:
        print("CORRECT")
        score += 1
        amount += 1
        print(f"Your score is {score}/10")
        input("press enter to continue")
        replit.clear()
        goto .start
    else:
        print("INCORRECT")
        print(f"Your score is {score}/10")
        amount += 1
        input("press ENTER to continue")
        replit.clear()
        goto .start

print("Congratulations, you finished the test")
print(f"Your score was {score}/10")
print("Would you like to do the test again")
answer = input("Type 'yes' or 'no':  ")
if answer == "yes":
    replit.clear()
    goto .startstart 
elif answer == "no":
    print("BYE")
else:
    print("Could not compute")
    print("ID10T Error")

方案2:直接构造整除的数(更高效)

先随机生成除数num2和商(范围限制为1到10//num2,确保被除数不超过10),再计算被除数num1 = num2 * 商,从根源避免循环:

import random
import replit
from csinsc import *

def add(num1,num2):
  return num1 + num2
def subtract(num1,num2):
  return num1 - num2
def multiply(num1,num2):
  return num1 * num2
def divide(num1,num2):
  return num1 / num2

label .startstart
score = 0
amount = 0

label .start
if amount != 10:
    # 直接生成确保整除的数,无需循环
    num2 = random.randint(1,10)
    # 商的范围保证num1 = num2*商 <=10
    quotient = random.randint(1, 10 // num2)
    num1 = num2 * quotient
    
    print("what is ", num1 ,'÷', num2,)
    p = int(input("ANSWER:  "))
    a = divide(num1,num2)
    if p == a:
        print("CORRECT")
        score += 1
        amount += 1
        print(f"Your score is {score}/10")
        input("press enter to continue")
        replit.clear()
        goto .start
    else:
        print("INCORRECT")
        print(f"Your score is {score}/10")
        amount += 1
        input("press ENTER to continue")
        replit.clear()
        goto .start

print("Congratulations, you finished the test")
print(f"Your score was {score}/10")
print("Would you like to do the test again")
answer = input("Type 'yes' or 'no':  ")
if answer == "yes":
    replit.clear()
    goto .startstart 
elif answer == "no":
    print("BYE")
else:
    print("Could not compute")
    print("ID10T Error")

额外优化点

  • 删除了原代码中重复定义的multiply函数
  • 使用f-string简化分数输出格式,代码更简洁

内容的提问来源于stack exchange,提问作者Thom08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 17:13:14