[英]How can I arrange this function so it returns a list with all this lists on it
[英]How can I change this function so that it returns a list of the number of even digits in a file?
def evens(number_file: TextIO) -> List[int]:
lst = []
line = number_file.readline().strip()
while line != '':
evens = 0
line = number_file.readline().strip()
while line.isdigit():
evens = evens + int(line)
line = number_file.readline().strip()
lst.append(evens)
return last
在此示例中,文件“numbers.txt”如下所示:
開始
1
2
結尾
開始
3
結尾
開始
4
5
6
結尾
每行都是一個 int 或 'START' 或 'END' 我想創建一個函數來返回每個部分中的偶數數量,因此當代碼在此文件上運行時,它應該返回列表 [1, 0, 2] . 有人可以幫我嗎?
import numpy as np
def main():
line = [1,4,5,6,8,8,9,10]
evens = np.array()
for l in line:
if (l % 2) == 0:
np.append(evens, l)
return evens
if __name__ == '__main__':
main()
沒有你的txt
文件和讀取它的代碼,這是我能做的最好的。
編寫新代碼時,最好從小處着手,然后一點一點地添加功能。 例如,首先編寫無需擔心節的代碼,然后更新以使用節。
但無論如何,這里有一些應該可以工作的修改后的代碼:
def evens(number_file: TextIO) -> List[int]:
lst = []
line = number_file.readline().strip()
while line != '':
evens = 0
# ignore all text lines
while !line.isdigit():
line = number_file.readline().strip()
# process number lines
while line.isdigit():
if int(line) % 2 == 0:
evens = evens + 1
line = number_file.readline().strip()
lst.append(evens)
return lst
這是一個可能更簡單的版本(Python 中的for
循環通常可以讓您的生活更輕松,例如在處理文件的每一行時):
def evens(number_file: TextIO) -> List[int]:
lst = []
for row in number_file:
line = row.strip()
if line == 'START':
# new section, start new count
lst.append(0)
elif line.isdigit() and int(line) % 2 == 0:
# update current count (last item in lst)
lst[-1] += 1
return lst
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.