所以,我有这个程序返回16的平方根为4.0;但是,之后增加了1.0。当我尝试输入28时,它返回5.0 1.12而不是2(7)(我不知道如何输入平方根符号)如果我输入197则返回14.0 1.00510204082而不是(197)。任何帮助解决如何使正确的输出发生将不胜感激,这是代码:
from math import modf
from math import sqrt
#Establish input
A = int(raw_input("Enter the number under the radical:"))
#Input taken, setup math
B = (A + 1)
C = sqrt(B)
#seperate parts
Fractional, Integral = modf(C)
Fractional1, Integral1 = modf(A / (Integral**2))
def Intg(Integral):
while Fractional1 == Fractional1:
if Fractional1 == 0 and (A / (Integral**2)) == 1:
print (Integral)
return Integral
else:
Integral = (Integral - 1)
if Integral == 1:
print (A / (Integral**2))
elif not Integral ==1 or (Fractional1 == 0 and (A / (Intergral**2)) == 1):
print Integral, (A / (Integral**2))
答案 0 :(得分:0)
快速注意,您在下一行拼错了Integral:
if not Integral ==1 or (Fractional1 == 0 and (A / (Intergral**2)) == 1):
将激进放在输出中使用
print("The answer is "+ u'\u221a' +str(int(squared)))
在输入16作为问题的情况下,Integral = 4,即
elif not Integral ==1 or (Fractional1 == 0 and (A / (Integral**2)) == 1):
在这种情况下,您的代码会打印出Integral和A / Integral ** 2。
print Integral, (A / (Integral**2))
A = 16;积分** 2 = 16; 16/16 = 1,代码打印4和1
当你输入28时,你的小数1将始终为零,因为当你在python中进行除法时,你总是得到一个整数。 " 28/9变为3.0而不是3.1111111 ..."而不是使用modf你应该使用模数运算28%9 = 1给你你想要的小数或余数。
Integral1 = A / Integral**2
Fractional1 = A%Integral**2
但这并没有给你一个正确的解决方案。你得到5因为" sqr(28)= 5.29150262 .."你想要一个7.你不能用平方根函数得到它。它确实给你一个近似值,你可以使用它来更好地猜测你应该回答的是什么。通过基于5的完美正方形迭代,您将得到您正在寻找的答案。在解决这个问题时,这与你在纸上做的一样。
answer = ''
for number in range(2,int(Integral)+1):
print number
rem = A%number**2
if not rem:
answer = 'The answer is ' + str(number) + u'\u221a' + str(A/number**2)
if not answer:
print('The answer is '+ u'\u221a' + str(A))
else:
打印出"2√7"对于输入28的答案。它还打印出√197到你的输入197.我建立在我自己的项目上你可以在github" https://github.com/Triballian/simprad"
print answer