python语言如何结尾?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python语言如何结尾?相关的知识,希望对你有一定的参考价值。

python break语句
break语句,就像在C语言中,打破了最小封闭for或者while循环。
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
break语句用在while和for循环中。
如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
功能:当代码执行到break时,就会立刻结束break所在的循环。
结束循环:break语句是结束整个循环的过程,不在判断执行循环的条件是否成立。
跳出循环:break语句符合条件后,直接结束循环,只能跳出当前层次的循环。
python continue语句
python continue语句跳出本次循环,而break跳出整个循环。
continue语句用来告诉python跳过当前循环的剩余语句,然后继续进行下一轮循环。
continue语句用在while和for循环中。
功能:用来结束本次循环,紧接着执行下一次的循环。
结束循环:continue语句是只结束本次循环,并不终止整个循环的执行。
跳出循环:跳出循环体中还没有执行的语句,跳出本次循环,但是并不跳出当前循环。
参考技术A python语言是一句一句解释执行的,语句都执行完就结束退出了。
为了程序易读,且各种因错误退出都清晰,一般会在主程序中用 return(返回值) 来标记退出。

python - 如何在不检查空行的情况下循环直到Python中的文件结尾?

【中文标题】python - 如何在不检查空行的情况下循环直到Python中的文件结尾?【英文标题】:How to while loop until the end of a file in Python without checking for empty line? 【发布时间】:2015-05-15 08:28:51 【问题描述】:

我正在写一个计算文件中元音数量的作业,目前在我的课堂上我们只使用这样的代码来检查文件的结尾:

vowel=0
f=open("filename.txt","r",encoding="utf-8" )
line=f.readline().strip()
while line!="":
    for j in range (len(line)):
        if line[j].isvowel():
            vowel+=1

    line=f.readline().strip()

但是这次我们的作业,我们教授给出的输入文件是整篇论文,所以整个文本中有几个空行来分隔段落等等,这意味着我当前的代码只会计算到第一个空行。

除了检查该行是否为空白之外,还有什么方法可以检查我的文件是否已结束?最好以与我目前的代码类似的方式,在 while 循环的每次迭代中检查某些内容

提前致谢

【问题讨论】:

这本身并不值得回答,但如果你跳过在你的行中调用strip(),你的其余代码就可以正常工作。在没有文本的行上调用readline() 将返回"\n",而在文件末尾将返回""(一个空字符串)。另一种选择是调用read() 以将所有文件的文本放在一个长字符串中,然后您可以对其进行迭代。您实际上不需要逐行计算元音。 【参考方案1】:

不要以这种方式循环文件。而是使用for 循环。

for line in f:
    vowel += sum(ch.isvowel() for ch in line)

其实你的整个程序就是:

VOWELS = 'A','E','I','O','U','a','e','i','o','u'
# I'm assuming this is what isvowel checks, unless you're doing something
# fancy to check if 'y' is a vowel
with open('filename.txt') as f:
    vowel = sum(ch in VOWELS for line in f for ch in line.strip())

也就是说,如果您出于某些错误的原因真的想继续使用 while 循环:

while True:
    line = f.readline().strip()
    if line == '':
        # either end of file or just a blank line.....
        # we'll assume EOF, because we don't have a choice with the while loop!
        break

【讨论】:

吹毛求疵...您应该将as f 添加到with 语句中。 Python 不会为 file.readline() 抛出 EOFError (尽管我希望它这样做并且许多答案声称它确实如此)。相反,寻找一个未终止的空行(例如,line=f.readline(); if not line: ...)另见docs.python.org/2/library/exceptions.html#exceptions.EOFError 在 SO 中获得 17.8k 声望需要我一生的时间,但有一个更正if line == '': 而不是if line = ''。我知道这不是讨论的一部分,但我想指出这一点。 :) :) @AdamSmith @DurwasaChakraborty 谢谢!不管你写了多长时间,你仍然可以打错:) @Maor 我知道这已经很老了,但我假设您正在查看 while not flag: do_stuff()for thing in stuff: do_stuff(); if flag: break 之类的东西。我通常更喜欢那里的for 循环,但这在很大程度上取决于个人情况。你不会看到太大的性能差异,所以宁愿让你的代码更具可读性。【参考方案2】:

查找文件的结束位置:

f = open("file.txt","r")
f.seek(0,2) #Jumps to the end
f.tell()    #Give you the end location (characters from start)
f.seek(0)   #Jump to the beginning of the file again

那么你可以:

if line == '' and f.tell() == endLocation:
   break

【讨论】:

【参考方案3】:

f 中的行

将所有文件读取到内存中,这可能是个问题。

我的提议是通过替换剥离和检查空行来更改原始来源。因为如果它不是最后一行 - 您将在其中至少收到换行符('\n')。 '.strip()' 将其删除。 但是在文件的最后一行您将收到真正的空行,没有任何字符。所以下面的循环不会给你错误的EOF,也不会浪费内存:

with open("blablabla.txt", "r") as fl_in:
   while True:
      line = fl_in.readline()

        if not line:
            break

      line = line.strip()
      # do what You want

【讨论】:

【参考方案4】:
import io

f = io.open('testfile.txt', 'r')
line = f.readline()
while line != '':
        print line
        line = f.readline()
f.close()

【讨论】:

【参考方案5】:

我在遵循上述建议时发现 对于 f 中的行: 不适用于 pandas 数据框(不是有人说会) 因为数据框中文件的结尾是最后一列,而不是最后一行。 例如,如果您有一个包含 3 个字段(列)和 9 个记录(行)的数据框,则 for 循环将在第 3 次迭代后停止,而不是在第 9 次迭代后停止。 特蕾莎

【讨论】:

因为这个问题中没有提到熊猫和熊猫中的数据框,我建议将其作为对原始帖子的评论而不是答案。 (但是,这个帖子有点晚了,所以也许我们就别管它了。)

以上是关于python语言如何结尾?的主要内容,如果未能解决你的问题,请参考以下文章

Python语言学习:模块

再次爆肝熬夜整理Python编程工具面试题库学习资料总集,结尾自取免费分享

python语言学习6——python基础

python 如何将一系列数字十个一行输出

python 初探,第一个小程序

Python基础之我们了解python和关于python的第一个hello world代码