Python简化了激进不通的事情

时间:2015-07-04 05:32:31

标签: python

所以,我有这个程序返回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))

1 个答案:

答案 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:
print answer
打印出"2√7"对于输入28的答案。它还打印出√197到你的输入197.我建立在我自己的项目上你可以在github" https://github.com/Triballian/simprad"