我的问题可在以下评论中找到
def Distanceinput():
distance = eval(input('Enter a distance (in light years):'))
print("Velocity Relative time to reach", distance, "light years")
问题出现在下面的代码块中,我尝试使用距离上面的距离,但它会以错误的形式返回。我该怎么做才能解决这个问题?
def velocity(velocityPercent):
DilationFactor = (((1 - (velocityPercent ** 2)) / 10000) ** 0.5)
perceptualSpeed = (distance * DilationFactor) * 100
print(velocityPercent, + "% of light", perceptualSpeed, "years.")
上面的代码块是造成问题的原因
def Time():
Distanceinput()
print()
velocity(10)
print()
velocity(25)
print()
velocity(50)
print()
velocity(75)
print()
velocity(90)
print()
velocity(99)
print()
Time()
答案 0 :(得分:3)
distance = None
def Distanceinput():
global distance
distance = eval(input('Enter a distance (in light years):'))
print("Velocity Relative time to reach", distance, "light years")
答案 1 :(得分:1)
local
和global
变量之间的区别在于局部变量只能在函数内部访问,而全局变量可以在整个程序中的任何位置访问。注意名称,本地(在某个区域内可用)和全局,在任何地方都可用。
def Distanceinput():
distance = eval(input('Enter a distance (in light years):'))
print("Velocity Relative time to reach", distance, "light years")
def velocity(velocityPercent):
DilationFactor = (((1 - (velocityPercent ** 2)) / 10000) ** 0.5)
perceptualSpeed = (distance * DilationFactor) * 100
print(velocityPercent, + "% of light", perceptualSpeed, "years.")
您的Distanceinput()
没问题。您应该返回该值,以便稍后可以在程序中使用它。返回本地和全局变量,distance
中的velocity(velocityPercent)
被视为局部变量。您无法在函数中的任何位置说过,您需要访问在程序中其他位置具有值的变量distance
。你可以这样做:
# Somewhere at the top of your code...
distance = None
然后,在你的函数中:
def Distanceinput():
global distance # Says that your function requires the following global variable
# rest of your code
return distance # In case you need the output of the function later on.
def velocity(velocityPercent):
global distance # Again, the same action as above
DilationFactor = (((1 - (velocityPercent ** 2)) / 10000) ** 0.5)
perceptualSpeed = (distance * DilationFactor) * 100
print(velocityPercent, " % of light ", perceptualSpeed, " years.")
希望它有所帮助! :)
答案 2 :(得分:1)
我的代码组织方式略有不同。 此外,如果我理解正确你的速度函数有一些错误,所以我也改变了它。
说明:
eval
和exec
可以执行恶意代码,因此除非您是唯一使用您的程序的人,否则请尽量避免使用。对于给定的问题,int
可以正常工作。distance
。 \n
是换行符。velocityPercent /= 100.
相当于 set velocityPercent to
其先前值除以100 。请注意它的100.
带点,
如果你使用python 2.7。然后我删除了/100000
DilationFactor
中的100
和perceptualSpeed
中的velocity
。您可以更改的一件事是class Galaxy(object):
DISTANCE = 'i like dogs'
def Distanceinput(self):
self.DISTANCE = int(input('\nEnter a distance (in light years):'))
print("Velocity Relative time to reach", self.DISTANCE, "light years")
def velocity(self, velocityPercent):
velocityPercent /= 100.
DilationFactor = ((1 - (velocityPercent ** 2)) ** 0.5)
perceptualSpeed = self.DISTANCE * DilationFactor
print(velocityPercent, "% of light", perceptualSpeed, "years.")
def Time(self):
self.Distanceinput()
print()
for vel in (10, 25, 50, 75, 90, 99):
self.velocity(vel)
galaxy_1 = Galaxy()
galaxy_1.Time()
的输出。
{{1}}
答案 3 :(得分:0)