Python: проблемы с выходом при использовании цикла while - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь выяснить, как вывести переменные / функции их решений и их различий.

У меня были проблемы с ним, бесконечно выводившие одно и то же, поэтому я поставил перерыв. Нотеперь я запутался в том, как напечатать все в одной строке (если это имеет смысл?)

Редактировать: (спасибо @ 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()

должно выводиться имяпеременные с их значениями (используя 'a' до 25. Итак, всего 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 голосов
/ 10 октября 2019

Если вы используете цикл while, у вас должен быть критерий для остановки итерации, в противном случае он продолжается до бесконечности. Вы можете либо использовать цикл for, который заканчивается на 25, либо любое другое число, которое нужно, или использовать цикл while с переменной, которая будет использоваться для завершения цикла. Вы создали бесконечный цикл, и он прерывается после создания одной итерации.

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

Во-вторых, break указывает python полностью выйти из цикла. Если вы используете перерыв, он скажет 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.'
0 голосов
/ 10 октября 2019

Итак, ваш вопрос о том, как напечатать сообщение конкат?

В своем заявлении на печать вы процитировали все выражение, python напечатает все без изменений.

Вы можете: 1. конкатировать кавычку и переменную, 2. f-строку или 3. форматироватьвыход. Я считаю f-строку самой простой:

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

output:

a is 3

В вашем случае, просто добавьте букву "f" перед кавычкой, чтобы добиться цели:

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