1

我正在尝试在与我相关的项目的自我思考和利用 teamtreehouse 之间学习 Python,尽管它进展缓慢。

目标:让内部循环计算一年内单个班级学期的费用,然后将其打印出来。这个内部循环将运行 5 次。

外循环应该只运行一次以打印出基本的打印件。

i相反,尽管我将(计数器变量)定义为每个 while 循环的第一行,但我得到了这个错误?

错误:

This program will display the projected semester tuition amount for the next 5 years for full-time students.                                                                    
This will be calculated with a $6,000 per semester tuition with a 2% yearly increase for 5 years.                                                                               
Traceback (most recent call last):                                                                                                                                              
  File "main.py", line 26, in <module>                                                                                                                                          
    while  i in range(1, years + 1):                                                                                                                                            
NameError: name 'i' is not defined

代码

#////////MAIN PROGRAM START//////////////
print('This program will display the projected semester tuition amount for the next 5 years for full-time students.')
print('This will be calculated with a $6,000 per semester tuition with a 2% yearly increase for 5 years.')

#////////FORMULA START//////////////
#def formula():

#//////VARIABLES
#///increase of tuition %
yearlyIncrease=0.02
#///increase of tuition %

#/////counter variables
years=1
semester=1
semesters=2
#/////counter variables

tuitionTotalPre=0
tuitionCost=12000
tuitionTotalPost=0
semesterCost=0
#//////VARIABLES

#print(‘Tuition for ‘ year ‘is ‘ tuitionTotal
while  i in range(1, years + 1):
    i=0
    print('The cost of tuition for a semester this year is.')
    tuitionTotalPre=tuitionCost*yearlyIncrease
    tuitionTotalPost=tuitionCost+tuitionTotalPre
    tuitionCost=tuitionTotalPost
    semester=1
    while i in range(1, semesters + 1):
        i=0
        semesterCost=tuitionTotalPost/2 
        print(semesterCost)
        semester=semester+1
    years=years+1

#////////FORMULA END//////////////
#formula()

#////////MAIN PROGRAM END//////////////
4

1 回答 1

2

你想要一个for循环:

for i in range(1, years + 1):

for i in range(1, semesters + 1):

for循环接受一个可迭代对象(这里是range(1, years + 1)表达式的输出)并将该可迭代对象产生的每个值分配给目标变量(i)。

一个while循环取而代之的是一个条件;控制循环是否继续的表达式。如果为真,则运行循环体,否则不运行。

因此,在您的情况下,while表达式是i in range(1, years + 1),它询问预先存在的变量中的值i是否是结果的成员range(1, years + 1)。由于在输入语句之前没有i定义变量,因此会出现异常。whileNameError

接下来,您不会在循环中递增years和。semesterrange()为您生成所有数字;如果您有 3 年 5 个学期,请先设置这些值,以便您可以生成一个循环范围:

years = 3
semesters = 5

for year in range(1, years + 1):
    # will loop through 1, 2, and 3
    for semester in range(1, semesters + 1):
        # will loop through 1, 2, 3, 4 and 5 for each year

请注意,我在这里选择了更多信息性的名称,i这并不是一个真正有用的名称。

如果您熟悉该术语,Pythonfor循环是一个Foreach 循环结构,与 Cfor结构完全不同。

于 2015-04-26T01:31:01.603 回答