【发布时间】:2020-09-19 04:58:54
【问题描述】:
我正在做一个学校项目。我制作了我的程序的测试版本,因为我是 Python 新手,而且我只有 C# 的经验,所以我还在学习基础知识。我的问题如下: 在函数“Fill_Array()”之前,我声明了一个变量(“max_element_var”),它应该存储可以存储在数组(“content_array”)中的最大元素数。稍后在函数中,我将它的值更改为控制台的输入,这发生了,并且函数按原样运行,唯一的问题是在函数之外“max_element_var”的值保持“无”。我应该怎么做才能解决这个问题?
#__Test__#
def Test():
class Que:
def __init__(self, content, max_element ,actual_elements):
self.content = content
self.max_element = max_element
self.actual_elements = actual_elements
max_element_var = None
content_array = []
def Fill_array():
print("What should be the max number of elements that can be stored in the array? (Type in an integer!)")
max_element_var = int(input())
if(max_element_var>0):
import random
random_var = random.randrange(0,max_element_var)
for x in range(max_element_var-random_var):
content_array.append(x)
else:
print("It has to be more than 0!")
Fill_array()
Fill_array()
actual_elements_var = len(content_array)
que = Que (content_array, max_element_var, actual_elements_var)
print("Content: ", que.content)
print("Max number of elements: ", que.max_element)
print("Actual number of elements: ", que.actual_elements)
#__Test__#
#__Full__#
def Full():
pass
#__Full__#
#__Version_selector__#
def Version_selector():
print("Which version should be used? (Type in the number!)")
print("1 - Test")
print("2 - Full")
answer = int(input())
if(answer == 1):
Test()
Version_selector()
elif(answer == 2):
Full()
Version_selector()
#__Version_selector__#
Version_selector()
【问题讨论】:
-
一些批评:1) 你在你的函数中声明一个本地类“Que”有什么原因吗?有例外but this is generally not a good idea and overly complicates your code。 2) 模块导入通常也不会在函数内部完成,即
import random。 3)出于您的目的, Version_selector 不应该递归地调用自己。最好使用 while 循环。 -
@elitofsly--转换了上面的 cmets 以创建一个有助于简化事情的答案,希望如此。不要忘记Zen of Python
标签: python arrays class variables constructor