Python:使用while循环解决了输出问题

时间:2019-10-10 00:51:38

标签: python loops math while-loop

我试图弄清楚如何输出其解决方案的变量/函数及其差异。

我在无限地输出相同的东西时遇到了问题,所以我把它弄乱了。但是现在我很困惑如何在一行中打印所有内容(如果有意义)?

编辑:(谢谢@ dgg32) 更新

import math
def my_sqrt(a):
    x=5
    y=1
    while True:
        y = (x + a/x) / 2.0
        if y == x:
            break
        x = y 
    return y 
def test_sqrt():
    a=5
    while True:
        if a<=25:
            b=my_sqrt(a)
            c=math.sqrt(a)
            d=abs(b-c)
            print (f"a={a} | my_sqrt(a)={b} | math.sqrt(a)={c} | diff={d}")
            a=+1

test_sqrt()

它应该输出变量的名称及其值(最多使用25个“ a”。因此,总共25条输出行显示出“ a”的值,这些值用于计算my_sqrt,math.sqrt以及它们之间的差异)

现在,它无休止地输出相同的结果,而没有我期望的增量更新。

已解决

def my_sqrt(a):
    x=5
    y=1
    while True:
        y = (x + a/x) / 2.0
        if y == x:
            break
        x = y 
    return y 

def test_sqrt():
    a=1
    count=0
    while (count<=25):
         b=my_sqrt(a)
         c=math.sqrt(a)
         d=abs(b-c)
         print (f"a={a} | my_sqrt(a)={b} | math.sqrt(a)={c} | diff={d}")
         count = count + 1
         a=a+1
test_sqrt()

感谢那些帮助我了解这一点的人。我对此深表谢意。

2 个答案:

答案 0 :(得分:0)

所以您的问题是有关如何打印连续消息的?

在您的打印语句中,您引用了整个表达式,python将打印整个内容,而无需更改。

您可以:1.连接引号和变量,2. f字符串或3.格式化的输出。我发现最简单的f字串:

value = 3
print (f"a is {value}")

输出:

a is 3

在您的情况下,只需在引号前面添加字母“ f”即可达到目的:

    print (f'a = {b}  | my_sqrt(a) = {b} | math.sqrt(a) = {c} | diff = {d}')

答案 1 :(得分:0)

如果使用while循环,则需要有一个条件来停止迭代,否则它将继续无穷大。您可以使用以25结尾的for循环或需要的任何数字,也可以使用带有变量的while循环来终止循环。您创建了一个无限循环,并在产生一次迭代后中断。

count = 0
while (count < 9):
   print 'The count is:', count
   count = count + 1

第二,break告诉python完全退出循环。如果使用break,它将告诉python停止运行循环。

如果要格式化字符串以打印漂亮的输出,则需要在使用format()或更新的f字符串的情况下使用字符串格式

"Hello, {}. You are {}.".format(name, age)
'Hello, Eric. You are 74.'

name = "Bob" 
'Hello, {}'.format(name)
'Hello, Bob'

name = "Eric"
age = 74
f"Hello, {name}. You are {age}."
'Hello, Eric. You are 74.'
相关问题