当前位置: 首页 > 知识库问答 >
问题:

无法在python 3.3的内部和外部循环之间传递变量值

洪飞扬
2023-03-14

我正在尝试使用TeamTreehouse学习订阅

目标:我正在尝试收集外部for循环中用户的输入。每个外循环迭代计算,内循环将迭代12次;每个月的降雨量。然后,外部回路将启动;显示整个时间段(1年或7年等)的月数、总降雨量和月平均降雨量。

我阅读了关于通过引用或通过值传递值的文章,发现python有可变和不可变的数据类型(int是一种不可变的数据类型),所以我不能简单地在for循环之间传递数据。那我怎么才能让它发挥作用呢?有人向我推荐了一个列表,但我不知道如何从列表中获得平均值,因为坦白地说,teamTreehouse或我的书的第4章中还没有涉及到这一点。http://en.wikibooks.org/wiki/Python_Programming/Data_Types

错误:无法获取从内部嵌套循环变量rainTotal传输到外部循环rainTotal的数据。

代码:

#//////MAIN PROGRAM START//////

#//////VARIABLE DECLARATION//////
totalMonths=0
rainAverage=0
rainFall=0
rainTotal=0
#//////VARIABLE DECLARATION//////

#//////USER INPUT FUNCTION//////
def userInput():
    years=0
    months=12
#////don't understand how to function properly
#    monthly_rain = []
#////don't understand how to function properly
    print('This program will calculate the average rainfall over a period of years.')
    years=int(input("Please provide the number of years to calculate rainfall for."))
    for i in range(1, years + 1):
    #////////////////testing variable values correct////////////////
    #Placeholder
    #////////////////testing variable values correct////////////////
#//////USER INPUT FUNCTION//////
        for i in range(1, months + 1):
            rainTotal=int()
            monthlyRainFall=int(input("Please provide the rainfall in inches for month number " + str(i) + str(": ")))
#////don't understand how to function properly
#            monthly_rain.append(monthlyRainFall)
#////don't understand how to function properly
            rainTotal = rainTotal + monthlyRainFall
            rainAverage=rainTotal/months
            #//////testing variable <> value assignment/////
#///////// python code references/////////////
#            print('Calculating for a total number of', totalMonths, 'months.')
#            print('Months\t\t\t' + 'Average Rainfall')        
#            print(rain, '\t\t\t\t\t', i)
#/////////format references/////////////
    print("There was a total of ", (years*months), "months calculated.")
    print("The accumulative total of rainfall was ", rainTotal, " inches!")
    print("Average Rainfall per month:", rainTotal/(years*months))
# after the inner loop runs the following should display

#//////CALLING FUNCTION//////
userInput()
#//////CALLING FUNCTION//////

共有1个答案

俞博涛
2023-03-14

如前所述,请详细说明您收到的错误。但从代码来看,在进入内部循环之前,请尝试定义rainTotal。即:

范围内的i(1,1年1):rainTotal=int()#这里是范围内的i(1,1个月1):

 类似资料:
  • 我正在研究一个涉及for循环和if-else语句的java函数。我需要根据多次迭代中的条件更改标志变量的值。我声明了一个名为flag的变量,并希望根据每次迭代中的条件进行更改。我需要在每次迭代结束时打印flag变量的值。但是当我打印变量时,它显示了一个错误,变量没有初始化。如果我给它一个初始值,它会一直打印初始值,而不是在If-else语句中处理的值。我不能根据自己的要求初始化for循环中的fla

  • 问题内容: 除了名称,这些类之间是否有任何区别? 如果我使用或不使用声明变量的方法,会有所不同吗? 我主要担心的是,我会以一种方式使用它,否则会给我带来进一步的问题。 问题答案: 外部变量集属于该类。它们被所有实例共享。 在内部(以及所有其他方法函数)创建并以其开头的变量属于对象实例。

  • 我试图在任意年份的经济衰退中计算复利。以下promise函数计算可变投资组合的发展。 编辑的清晰度: const是一个从1到20循环一年的数组(是静态的) 三元()在每次运行的不同年份触发,导致不同年份的

  • 问题内容: 我相信在AS3中,您应该在循环外初始化所有变量,以提高性能。JavaScript也是如此吗?哪个更好/更快/最佳实践? 要么 问题答案: 有 绝对没有区别 意义还是性能,在JavaScript或ActionScript。 是解析器的指令,而 不是 运行时执行的命令。如果在函数体(*)中的任何位置一次或多次声明了特定的标识符,则该标识符在块中的所有使用将引用局部变量。声明是在循环内部,循

  • 问题内容: 我有一个整数数组。 我想为每个X创建一个沿Y迭代的线程。我不知道如何将适当的X值传递给每个线程。 本质上我希望能够做到 任何帮助,将不胜感激 问题答案: 只值可以的方法和本地匿名内部类内被捕获。您需要按以下方式更改代码:

  • 问题内容: 我一生无法理解为什么我无法在while循环之外阅读postPrioity。我尝试过“ export postPrioity =“ 500””仍然无法正常工作。 有任何想法吗? -或在计划文字中- 输出:(我在files.txt中只有3个文件名) 问题答案: 管道操作员创建一个子外壳,请参阅BashPitfalls和BashFAQ。解决方案:不要使用,反正毫无用处。