Entrada e saída formatada

Exemplo 1:

Para quatro variáveis a,b,c e d, tal que a = 1.3432, b = 342.02, c = 3000.8023 e d = 20900.978234, faça um programa que exibe os 4 valores com duas casas de precisão após a vírgula, e na forma de uma tabela, conforme o exemplo abaixo:
| a:     1.34 | b:   342.02 |
| c:  3000.80 | d: 20900.98 |

Solução:

    print("| a: %8.2f | b: %8.2f |"%(a,b))
    print("| c: %8.2f | d: %8.2f |"%(c,d))
  

Precisão no cálculo de valores reais (float)

Problema 1:

Dado um número real x e um número real epsilon > 0, calcular uma aproximação de ex através da seguinte série infinita:
    ex = 1 + x + x2/2! + x3/3! + . . . + xk/k! + . . . 
Inclua na aproximação todos os termos até o primeiro de valor absoluto (módulo) menor do que epsilon.

Solução 1:

x   = float(input("Digite x: "))
eps = float(input("Digite epsilon: "))

soma = 1
fat = 1
k,tabs = 1,1
while tabs >= eps:
    pot = x**k
    fat *= k
    t = pot/fat
    tabs = t
    if tabs < 0:
        tabs = -tabs
    soma += t
    k += 1

print("e**(%5.3f) = %7.5f"%(x,soma))
  

Solução 2:

Uma versão ligeiramente diferente da anterior, sem calcular explicitamente o valor absoluto do termo em tabs.

x   = float(input("Digite x: "))
eps = float(input("Digite epsilon: "))

soma = 1
fat = 1
k,t = 1,1
while t >= eps or -t >= eps:
    pot = x**k
    fat *= k
    t = pot/fat
    soma += t
    k += 1

print("e**(%5.3f) = %7.5f"%(x,soma))
  

Solução 3:

Nessa nova solução, obtemos o termo seguinte da sequência em função do termo anterior usando uma fórmula de recorrência, com isso, evitamos o cálculo explícito de xk e do fatorial k!. Em geral, esse tipo de solução é a mais adequada. Note que xk e k! crescem muito rápido com o aumento de k. Logo, soluções baseadas no cálculo direto de xk e k! (como as duas soluções anteriores) podem sofrer de problemas no armazenamento de números grandes. Por exemplo, para x = 100.0 e epsilon = 0.001, no Python, você pode obter a seguinte mensagem de erro durante o cálculo de x**k: OverflowError: (34, 'Numerical result out of range')
A solução abaixo não apresenta esse problema, para esses valores de entrada, funcionando normalmente.

x   = float(input("Digite x: "))
eps = float(input("Digite epsilon: "))

soma = 1
k,t = 1,1
while t >= eps or -t >= eps:
    t = t*(x/k)
    soma += t
    k += 1

print("e**(%5.3f) = %7.5f"%(x,soma))
  

Problema 2:

Dados números reais x ≥ 0 e epsilon > 0, calcular uma aproximação da raiz quadrada de x através da seguinte sequência:
r0 = x e
rn+1 = 1/2 (rn+ x/rn).
Exemplos:
         Para x = 3, r0 = 3, r1 = 2,   r2 = 1.75, r3 = 1.732143, r4 = 1.732051
         Para x = 4, r0 = 4, r1 = 2.5, r2 = 2.05, r3 = 2.000610, r4 = 2.000000
         Para x = 5, r0 = 5, r1 = 3,   r2 = 2.33, r3 = 2.238095, r4 = 2.236068
         Para x=0.81, r0=0.81, r1=0.905, r2=0.9000138122, r3=0.9000000001
A aproximação será o primeiro valor rn+1 tal que |rn+1-rn| < epsilon.
x   = float(input("Digite x: "))
eps = float(input("Digite eps: "))

print(x**(1/2))

rant = x
erro = eps
while erro >= eps:
    r = (rant + x/rant)/2
    erro = r - rant
    if erro < 0:
        erro = -erro
    rant = r

print(r)
  

Problema 3:

Dados números reais a, b e c, calcular as raízes da equação ax2 + bx + c = 0, usando a função sqrt(x) do módulo math. Imprimir a solução em uma das seguintes formas:
        DUPLA     REAIS DISTINTAS                COMPLEXAS
        raiz      raiz 1                         parte real
                  raiz 2                         parte imaginária
import math

a = float(input("Digite a: "))
b = float(input("Digite b: "))
c = float(input("Digite c: "))

delta = b*b - 4*a*c

if delta == 0:
    x = -b/(2*a)
    print("DUPLA:",x)
elif delta > 0:
    rdelta = math.sqrt(delta)
    x1 = (-b + rdelta)/(2*a)
    x2 = (-b - rdelta)/(2*a)
    print("REAIS DISTINTAS: ",x1,x2)
else:
    rdelta = math.sqrt(-delta)
    x_img  = rdelta/(2*a)
    x_real = -b/(2*a)
    print("COMPLEXAS:")
    print("%.2f + i*%.2f"%(x_real,x_img))
    print("%.2f - i*%.2f"%(x_real,x_img))