Python通用循环构造方法详解:交互、哨兵与文件处理

竹里
竹里
发布时间:2026-10-13 | 4人浏览过
原创

本文深入解析Python中几种通用循环构造方法,包括允许用户交互的无限循环、通过特定数据终止的哨兵循环,以及基于文件行的读取模式。文章详细说明了哨兵值的设定原则、eval()函数的应用及readline()在文件处理中的关键作用,并指出处理含换行符的空行时需注意的细节,旨在帮助开发者掌握不同场景下的循环控制技巧。

本文详细解析了Python中几种通用循环结构的构建方式,供读者参考学习。

1. 交互循环

这是一种无限循环形式,允许用户通过交互方式控制程序执行到特定部分;

def main():
  sum =0.0
  count =0
  moredata ='yes'  #字符串
  while moredata[0] =='y': #获取字符串第一个字符,true执行下面的
    x =eval(input('enter a number>>'))
    sum =sum+x
    count = count +1
    moredata =input("你有更多的number(yes or no)")
  print("pingjunshushi:\n",sum/count)
main()
enter a number >>3
你有更多的number(yesor no)y
enter a number >>4
你有更多的number(yesor no)n
pingjunshushi:
 3.5

2. 哨兵循环:

当循环执行过程中遇到预设的特殊数据时,循环语句才会终止。

使用哨兵循环计算平均数的方法如下:

1)设定一个哨兵值作为循环终止的标识;

2)任何值均可视为哨兵,但必须与实际数据有所区别;

在Python中,空字符串以双引号""表示,请注意引号中间不能包含空格。

def main():
  sum =0
  count =0
  xStr = input("enter a number")
  while xStr != "":  #空字符串
    x = eval(xStr)  #转换字符串为数字的过成
    sum = sum + x
    count =count +1
    xStr = input("enter a number :")
  print("average is",sum/count)
main()
enter a number6
enter a number :6
enter a number :6
enter a number :  这里确认输入不是哨兵空字符才将输入字符串转换为数字
average is 6.0

eval() 函数参数为字符串时,可将其作为有效的Python表达式进行求值,并返回计算结果。

3. 文件循环

def main():
  fileName = input("file denumber:") #这个相当于一个文件
  infile = open(fileName,'r') #open(文件名,方式'r'/'w')函数用来打开这个文件的一行保存在infile列表(相当一个数组)中
  sum =0
  count = 0
  for line ininfile:   #循环变量line遍历文件的每一行(文件每一行已经保存在infile列表中),将每一行执行下面的代码
    sum = sum+eval(line)
    count = count +1
  print("aveage is:",sum/count)
main()

遍历文件时,通常采用哨兵方法逐行读取文件内容。

这种方法可用于读取Excel中的测试用例;

Python中采用readline()方法实现end-of-file(文件末尾)循环模式:

readline()将文件的一行读取到字符串中,当到达文件尾部时,readline()返回一个空字符串,该空字符串可作为哨兵值;

line=infile.readline()
while line != "":
#处理每一行
line =infile.readline()

这段代码容易让人误以为遇到空行时就会退出循环,但实际上并非如此。文本文件中的空行包含一个换行符\n,因此readline()函数返回的是换行符而非哨兵值的空字符串,循环将继续执行。

open() 打开文件并将内容保存到列表中

readline() 读取文件,每次读取一行

4. 死循环

在Python中,可以使用以下代码实现特定功能:

while True:
  try:
    x = int(input("输入一个数字:"))
    break
  except ValueError:
    print("重新输入:")

copy()函数:

返回字典的浅拷贝;

dict1={"name":"liyue"}
dict2=dict1.copy()
print("dict2 is:",str(dict2))

运行结果:

dict2 is: {'name': 'liyue'}

Python读取Excel:

注意读取时需包含表头,若无表头则无法处理,因此测试用例必须包含表头。

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表