我不能打印浮动

问题描述:

我想写我自己的平方根的代码,程序只能打印完美的正方形和没有小数点的根,这不是很有帮助。 我希望程序能够打印所有的根。我不能打印浮动

这是我迄今为止

while True: 

    def frange(start, stop, step=1): 
     i = start 
     while i < stop: 
      yield i 
      i += step 
    userInput=input("Enter a natural number:>>>") 
    userInput=int(userInput) 
    for i in frange(1,(userInput+1)/2): 
     if i*i==userInput: 

      print(i) 
+1

将def frange块移出while循环,并将int(userInput)更改为float(userInput),并且您很好! –

+0

更好地阅读你的问题,你需要改变你的frange()函数来输出浮点数。你打印的i值是你的frange()函数的输出,它总是一个整数。即使你将它投入浮动,它仍然只是整数。 –

+1

你的算法是一个蛮力搜索整数平方根,所以*当然*它只会打印完整平方的整数平方根。对于任意的平方根 - 你需要一个完全不同的方法,一个涉及例如牛顿的方法。或者 - 如果你不想重新发明轮子,只需使用'math.sqrt()'。顺便说一句,我怀疑你有任何麻烦*印刷*浮动,因此你的标题是误导。 –

而不是做这个的:

userInput=input("Enter a natural number:>>>") 
userInput=int(userInput) 

这样做:

userInput = float(input("Enter a number:>>>")) 

int只允许整数,float允许小数。

编辑:我也需要重新阅读你的问题

关于它的思考,很多你的代码是不必要的。您可以简单地执行:

userInput = float(input("Enter a number:>>>")) 
root = userInput ** 0.5 
print(str(root))