Python通用循环构造方法详解:交互、哨兵与文件处理
本文深入解析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程序设计有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









