Wpis z mikrobloga

Cześ

trochę się próbuję poduczyć #python

Oczywiście najprościej na przykładach, więc:

import sys
import math
import matplotlib.pyplot as plt

def inputBlock():
a=int(input("Podaj parametr a..."))
b=int(input ("Podaj parametr b..."))
c=int(input("Podaj parametr c..."))
inputMessagec0 = ("Postac ogolna funkcji: f(x) = {0:d}x^2 + {1:d}x\n")
inputMessagec1 = ("Postac ogolna funkcji: f(x) = {0:d}x^2 + {1:d}x + {2:d}\n")
if a != 0:
if c != 0:
print(inputMessagec1.format(a,b,c))
else:
print(inputMessagec0.format(a,b))
else:
print("Funkcja nie jest kwadratowa!")
inputBlock()
deltaBlock(a, b, c)

def deltaBlock(a, b, c):
delta = int(pow(b, 2)-(4*a*c))
print("Delta wynosi ", delta)
if delta < 0:
print("Delta ujemna!")
deltaUjemna(a,b,c)
elif delta == 0:
delta0(a,b,c)
elif delta > 0:
print("Delta dodatnia!")
deltaDodatnia(a,b,c, delta)

def deltaUjemna(a,b,c):
print("Funkcja nie ma miejsc zerowych!\n")
inputBlock()
wykresFunkcji(a, b, c)

def delta0(a, b, c):
print("Funcja ma jedno miejsce zerowe:")
x0=float((-b)/(2*a))
print("x0 =", x0)
inputBlock()
wykresFunkcji(a, b, c)

def deltaDodatnia(a, b, c, delta):
print("Funkcja ma dwa miejsca zerowe:")
x1 = float(((-b) - math.sqrt(delta)) / (2 * a))
x2 = float(((-b) + math.sqrt(delta)) / (2 * a))
print("x1 =", x1)
print("x2 =", x2)
inputBlock()
wykresFunkcji(a, b, c)

def wykresFunkcji(a,b,c):
aw=a
bw=b
cw=c
y = list()
x = range (-50,50)
for i in x:
yt=((aw*(pow(i,2)))+(bw*i)+cw)
y.append(yt)
print(yt, i)
plt.plot(x,y)
plt.title("Wykres funkcji kwadratowej f(x) = ax^2+bx+c")
plt.rcParams['lines.linewidth'] = 20
plt.grid(True)
plt.axis([-20, 20, -20, 20])
plt.show()
inputBlock()

def start():
print(" ***************************************************************\n")
print(" * Program do obliczania funckji kwadratowych *\n")
print(" * wersja 0.1 *\n")
print(" ***************************************************************\n")
inputBlock()

start()

niestety, nie wchodzi w funkcję "wykresFunkcji()".
Próbowałem ją wywoływać w różny sposób, nic z tego

generalnie to #help i chyba #programowanie #naukaprogramowania
  • 7
@mojemirabelki: tak, bo ideą jest, żeby po wykonaniu każdej program wracał na początek. Zrobiłem tak jak mówisz. inputBlock() dodałem to funkcji start(). Funkcje się wykonują, wyświetlają wykres, a po jego zamknięciu wracają do inputBlock(). Dziękuję!
@kamil_zdun: z wykorzystaniem numpy można by się jeszcze pokusić o coś takiego:

import numpy as np
...
def wykresFunkcji(a,b,c):
x = np.linspace(-50, 50, 1000)
y = a*x**2 + b*x + c
plt.plot(x,y,'b-')
plt.title("Wykres funkcji kwadratowej f(x) = ax^2+bx+c")
plt.grid(True)
plt.axis([-20, 20, -20, 20])
plt.show()