我遇到的问题是,在我的一个函数(函数range_and_number()
)中,我要求用户输入,并且我将此输入保存在一个名为max number
的变量中。接下来我检查了一下,确保这个值里面只有数字,如果有,我就中断循环。
def range_and_number():
while True:
max_number = input("Max Number Possible (No Decimals): ")
if max_number.isnumeric() == True:
print("Your Good")
max_number = int(max_number)
break
else:
print("Please Re-Type Your Maximum Number: ")
return max_number
def get_length():
lives = len(range_and_number)
return lives
def main():
s = get_length()
print(f"================= {s} =================")
问题:我想访问的值max number
在另一个函数(函数get_length()
)中,因为在这个函数中,我想测量变量'max number'中的字符长度。
得到的错误是:
lives = len(range_and_number)
TypeError: object of type 'function' has no len()
我明白为什么我得到错误,但我如何解决它。如何在不调用函数本身的情况下访问存储在max_number
中的值?
注:如果你有时间,请张贴尽可能多的可能的解决方案。提前感谢
(What I tried)
- 我尝试使用全局变量并在我的函数 的顶部创建它我将全局变量命名为TE
- 然后,我做了
TE = max_number
- 之后,我尝试在第二个函数中访问TE,但它不起作用
需要在函数名后面加上()
来调用它
你不能得到一个整数的长度,所以你需要把它转换成一个字符串来调用len()
。
def get_length():
lives = len(str(range_and_number()))
return lives
Issue:我想在另一个函数(function get_length())中访问max number的值,因为在这个函数中,我想测量变量'max number'中的字符长度。
- 我尝试使用全局变量并在我的函数
的顶部创建它
不要使用全局变量。在main
函数中使用变量
def range_and_number():
while True:
max_number_as_string = input("Max Number Possible (No Decimals): ")
try:
max_number = int(max_number_as_string)
print("You're good.")
return max_number
except ValueError:
print("Please Re-Type Your Maximum Number.")
def get_length(n):
return len(str(n))
def main():
max_number = range_and_number()
lives = get_length(max_number)
print('Lives: {}'.format(lives))
print('Max number: {}'.format(max_number))
if __name__ == '__main__':
main()
输出:
Max Number Possible (No Decimals): hello
Please Re-Type Your Maximum Number.
Max Number Possible (No Decimals): 127.5
Please Re-Type Your Maximum Number.
Max Number Possible (No Decimals): 127
You're good.
Lives: 3
Max number: 127
您必须调用该函数并将其转换为字符串:
s = range_and_number().__str__().__len__()
或在将其转换为int
之前打印len(max_number)
或者你可以在转换成int
后使用对数来计算长度,当你已经有了字符串的长度时,这将是不必要和低效的。
妙招:
Y = lambda f: (lambda x: x(x))(lambda y: f(lambda *args: y(y)(*args)))
range_and_number = lambda f: lambda s: (s.__len__() if (s:=input(s)) and s.isnumeric() else f("Please Re-Type Your Maximum Number: n"))
print("================= %d ================="%Y(range_and_number)('Max Number Possible (No Decimals): n'))
get_length函数应该调用range_and_number函数。你的代码应该是这样的:
def range_and_number():
while True:
max_number = input("Max Number Possible (No Decimals): ")
if max_number.isnumeric() == True:
print("Your Good")
max_number = int(max_number)
break
else:
print("Please Re-Type Your Maximum Number: ")
return max_number
def get_length():
lives = len(str(range_and_number()))
return lives
def main():
s = get_length()
print(f"================= {s} =================")