程序正在反转输入的功能

时间:2015-04-19 12:21:48

标签: python python-3.x

我的代码的目的是打印基于文本的函数图。但是,在打印图形时,它会打印我提供的函数的反函数,例如我的输入x + 2,它会产生f(x)= - x + 2的图形,当输入x ** 2 +时1,它打印f(x)= sqrt(x-1)的图形。这是代码:

import math
function = input ("Enter a function f(x):\n")
for x in range(-10,11):
    for y in range(-10,11):
        if round (eval (function))==y:
            print ("o", end="")
            y=y+1
        elif x==0 and y==0:
            print ("+", end="")
            y=y+1
        elif x==0:
            print ("-", end="")
            y=y+1
        elif y==0:
            print ("|", end="")
            y=y+1
        else:
            print (" ", end="")
    print ("")

我无法弄清楚我哪里出错了,为什么程序正在反转我输入的功能。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

因为您从底部(最大负数)开始迭代y,但是当您print行时,您不可避免地从顶即可。你也有错误的循环 - 你需要依次做每个(迭代y)并依次做每个(iterate {{ 1}})。切换到:

x

请注意,我已在循环中切换for y in range(10, -11, -1): # decending rows for x in range(-10, 11): # columns left to right if round(eval(function)) == y: print ("o", end="") elif x==0 and y==0: print ("+", end="") elif y==0: print ("-", end="") elif x==0: print ("|", end="") else: print (" ", end="") print ("") x,并将冗余增量移至y。对于y,这给了我:

function == "x+2"

| o | o | o | o | o | o | o |o o o| --------o-+---------- o | o | o | o | o | o | o | o | | |

function == "x**2"