import numpy as np while True: try: a=int(input("a= ")) b=int(input("b= ")) c=int(input("c= ")) break except ValueError: pass break title1="{}x**2{:+}x{:+}=0 " print("2次方程式 ",title1.format(a,b,c)," を解くと ") x_min = -100 x_max = 100 x_step = 1 flag1 = True get_indexes = lambda st:[i for (t,i) in zip(st,range(len(st))) if t == 0] get_indexes2 = lambda st:[i for (t,i) in zip(st,range(len(st))) if t < 0] x = np.arange(x_min, x_max+1, x_step,dtype='int64') y = a*x ** 2+b*x+c j = get_indexes(y) if len(j) != 0: flag1 = False print("整数解は ") for k in j: print("x=",x[k]) ys = np.insert(y,0,y[0]) yt = np.insert(y,-1,y[len(y)-1]) yy = yt*ys j = get_indexes2(yy) if len(j) != 0: flag1 = False print("実数解(整数解以外)は、") for k in j: print(x[k-1],"< x <",x[k]) print("の範囲にある") if flag1: print(x_min,"< x <",x_max," の範囲には実数解がない")