python29课时hw3【for和while在这里的区别】
关于python29课时hw3,按照用户要求打印文件中的任意行文字,下面的代码应该是可以正确执行的但是在【打印后几行】的代码部分,被#========圈起来的while语句,如果把while改成for,就不能正确执行了
比如输入28:
原来的语句会打印28行到最后一行
但是改成for之后,只会打印第28行
这是为什么呀,for和while的功能不应该是一样的吗?@小甲鱼
谢谢各路大神!
name=input('请输入要打开的文件(E:\\test.txt):')
n=input('请输入需要显示的行数【格式如13:21或:21或21:】:')
f=open(name,'r')
#打印全文
if n == ':':
print('文件%s的全文的内容如下:'% name)
c=f.readline()
while c: #不写成while f.readline():是因为防止跳行打印
print(c)
c=f.readline()
else:
#打印前几行
if n == ':':
n1=int(n) #n1表示用户输入的数字,例如输入:12,则n1=12
print('文件%s从开始到第%d行的内容如下:'%(name,n1))
i=0
for i in range(n1):
print(f.readline())
i+=1
#打印后几行
if n[-1] == ':':
n2=int(n) #n2表示用户输入的数字,例如输入12:,则n2=12
print('文件%s从第%d行到末尾的内容如下:'%(name,n2))
c=f.readline()
i=0
while c:
#=================================================
while i in range(n2-1): #这个while是为了跳过前几行,从第n2行开始打印
#=================================================
c=f.readline()
i+=1
print(c)
c=f.readline()
#打印中间几行
if (n != ':') and (n[-1] != ':'):
list1=n.split(':')
n1=int(list1) #n1和n2分别为输入的起始与终止数字
n2=int(list1[-1]) #例如输入12:14,则n1=12,n2=14
print('文件%s从第%d行到第%d行的内容如下:'%(name,n1,n2))
c=f.readline()
i=0
while c and i < n2:
while i in range(n1-1):
c=f.readline()
i+=1
print(c)
c=f.readline()
i+=1
f.close()
while i in range(n2-1) 表示的 当 i 是0到n2-2的值时候执行while循环,显然就跳过n2行,此处的 i in range(n2-1)是判断i是否是集合range(n2-1)的元素,是就是真,不是就是假,和下面的不同。
for i in range(n2-1),表示的是i依次是0到n2-1并且每次都执行for循环内容,注意你的i+=1不会对for循环的次数构成影响,下次外部while循环时候i又会从0到n2-2,所以是每隔n2-1次输出。
页:
[1]