我正在尝试解决x = -57.8
。我是新的编码,所以我不知道我在哪里错在这个代码。我总是面对不可迭代的对象。我一直不知道为什么!
import math
realNumber = input("Enter a floating-point real number:")
number =int(float(realNumber))
def f(x):
for x in number:
if x<5:
print("The value of x is:",(x**2/(math.fabs(x)+2))**2)
elif x==5:
print("The value of x is:",equal=(x**2/math.fabs(x)+2))
else:
print("The value of x is:",math.sqrt(x**2/(math.fabs(x)+2)))
return(x)
print(f("-57.8"))
f("-57.8")
这里的核心问题是,您的函数的许多行没有理由在那里,并且与您试图做的事情直接交叉。如果你不想迭代,不要使用for
循环,当你应该在float
上操作时,不要转换为int
,最重要的是,当你试图解决问题时,不要输入随机的代码行;它们几乎不会有任何帮助,而且通常只会破坏你的程序。
这是一个版本的代码,我认为它完成了你想做的事情。函数f
计算值并返回它(使用return
),而不是在函数内部打印它——这使它成为一个纯数学函数(输入一个数字,输出一个数字)。然后,您可以在print
语句的上下文中调用该函数以打印返回值。
import math
def f(x):
if x < 5:
return (x**2 / (math.fabs(x) + 2))**2
elif x == 5:
return x**2 / math.fabs(x) + 2
else:
return math.sqrt(x**2 / (math.fabs(x) + 2))
number = float(input("Enter a floating-point real number: "))
print("The value of f(x) is:", f(number))
import math
realNumber = input("Enter a floating-point real number:")
# Here you are converting string {ex: "2.5"} to float {ex: 2.5} then to int {ex: 2}
# You can directly cast string to int if it is possible
#number =int(float(realNumber))
number =int(realNumber)
def f(x):
#for x in number:
# x is a number {ex: 5}, you can not loop over it, so this line not required
if x<5:
print("The value of x is:",(x**2/(math.fabs(x)+2))**2)
elif x==5:
print("The value of x is:",equal=(x**2/math.fabs(x)+2))
else:
print("The value of x is:",math.sqrt(x**2/(math.fabs(x)+2)))
return(x)
# After return statement no code gets executed
# So this line not required
# Also it is calling the function itself, which is {recursion}, it can lead to infinite loop
#print(f("-57.8"))
#f("-57.8")
# you want to pass number
f(number)