我的代码的目的是打印基于文本的函数图。但是,在打印图形时,它会打印我提供的函数的反函数,例如我的输入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 ("")
我无法弄清楚我哪里出错了,为什么程序正在反转我输入的功能。我该如何解决这个问题?
答案 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"