-1
2次多項式をチェックしてプロットするプログラムを作成しました。私たちがちょうど1つの関数を使用するとうまくいきましたが、それをいくつかの小さな関数に分割した後、Pythonシェルは常に「コードが不完全で実行できませんでした」と言います。 しかし、これを引き起こす可能性のある間違いを見つけることはできません。Python不完全コード
import matplotlib as mp
mp.use("Qt4Agg")
import numpy as np
import matplotlib.pyplot as plt
import warnings as wn
p = 0
q = 0
num = False
a = False # Wir gehen am Anfang davon aus, dass beide Nullstellen komplex sind.
b = False
l1 = []
def pq(p,q): # pq bekommt zwei Eingaben, mit den er die Funktion definiert
s = p/2
pp = -s
r = s ** 2 - q
if (r >=0):
a = True
b = True
x_01=pp+np.sqrt(r) # Nullstellen werden mithilfe der p-q-Formel berechnet
x_02=pp-np.sqrt(r)
else:
with wn.catch_warnings():
wn.simplefilter("ignore")
pp=complex(pp)
r=complex(r)
x_01=pp+np.sqrt(r) # Nullstellen werden mithilfe der p-q-Formel berechnet
x_02=pp-np.sqrt(r)
l1.append(x_01)
l1.append(x_02)
print([x_01,x_02])
return(a,b,x_01,x_02)
def check(x_01, x_02):
if (x_01 == x_02):
print("Die reelle Nullstelle "+str(x_01)+" liegt doppelt vor")
elif (a and b):
print("Es liegen die 2 verschiedenen reellen Nullstellen "+str(x_01)+" und "+str(x_02)+" vor.")
else:
print("Es liegen die 2 verschiedenen komplexen Nullstellen "+str(x_01)+" und "+str(x_02)+" vor.")
return(x_01,x_02)
def chart1(p, q, x_01, x_02):
x=np.linspace(-5,5,100) # Funktion wird von -10 bis 10 geplottet
y=(x**2+p*x+q)
plt.plot(x,y)
if (a == True):
plt.plot(x_01,0,"or")
if (b == True):
plt.plot(x_02,0,"or")
plt.show()
plt.savefig("HA_Diagramm.png")
return 1
while (num == False):
try:
p=float(raw_input("Was soll Dein p sein? "))
q=float(raw_input("Was soll Dein q sein? "))
l1.apppend(p)
l1.apppend(q)
num = True
except ValueError:
print ("Geben Sie einen numerischen Wert ein. ")
except KeyboardInterrupt:
print("Ich habe noch gearbeitet, bitte geben Sie eine neue Zahl ein.")
def work(p,q):
pq(p,q)
print (l1)
return 1
a = work(p,q)
インデントを修正してください – DavidG