计算一个等式在python中达到特定结果之前使用了多少次

2024-03-28 20:27:10 发布

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

import math
#entrada

x=int(input("Put a number here:"))

#processo

num1=int(math.sqrt(x))
num2=round(num1,0)
num3=num2**2
remaining=x-num3

#saída

print("The remaining is:",remaining)

我做这个代码是为了得到一个完美正方形的剩余值,对于任何一个“int”数,现在我想改进这个代码,让它继续用最后一个答案(存储在“remaining”中)来做这个等式是“0”(然后停止计算)。你知道吗

然后,在它完成计算之后,我想数一数我用了多少次这个等式,直到它达到“0”

我知道这很难理解,我举一个例子:

对于数字87,在这个代码中剩下的将是6,因为87-(9²)=6,我想使用这个结果(6)并建立相同的方程,然后结果将是(2),因为6-(2²)=2,然后再次执行(1),然后在返回(0)时停止。你知道吗

在那之后,我想数一数方程被用来达到(0)的次数,在这个例子中,它将是4(876)(62)(21)(10)。我想打印这个计数……在这个例子中(4)

我知道在这方面需要很多帮助(这是一个很大的请求),但我现在只是开始编程(10天前),在互联网上找不到我想要的东西。谢谢你的帮助。另外,如果有任何方法,使我的原始代码更好地告诉我请。你知道吗


Tags: 代码importnumberinputputmath例子int
1条回答
网友
1楼 · 发布于 2024-03-28 20:27:10

我想你需要这样的东西:

def count_squares(x):
    count = 0
    remaining = 1
    while remaining:
        min_square = (int(x**0.5) // 1) **2
        remaining = x - min_square
        count +=1
        print('X = {}, remaining = {}, count = {}'.format(x, remaining, count))
        x = remaining
    return count

print(count_squares(87))

说明:

  • **运算符-用于求幂。你知道吗
  • //操作员-楼层划分。在这种情况下,它类似于用于计算num2的“int”和“round”边界,因为“//1”将丢弃点后面的所有数字。顺便说一下,在这种情况下,int()函数根本不是必需的。你知道吗
  • 当剩余值等于零时,我们将退出while循环,因为零整数值被解释为false。你知道吗
  • format是用来格式化字符串的方法(令人惊讶)。所有{}都将被传递给“format”方法的参数填充。在python中还有其他格式化方法(%operator和格式化字符串)。你知道吗

输出为:

X = 87, remaining = 6, Count = 1
X = 6, remaining = 2, Count = 2
X = 2, remaining = 1, Count = 3
X = 1, remaining = 0, Count = 4
4

相关问题 更多 >