第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Findall() 沒有找到文本文件中的所有數(shù)字

Findall() 沒有找到文本文件中的所有數(shù)字

aluckdog 2023-05-23 15:35:15
該代碼應(yīng)該找到總和為 445833 的 90 個數(shù)字。我的代碼找到總和為 445829 的 89 個數(shù)字。我做錯了什么?fn=open('regex_sum_42.txt','r')import renumbers = []count = 0for line in fn:? ? line = line.split()? ? for char in line:? ? ? ? n=re.findall('[0-9]+',char)? ? ? ? if len(n)>0:? ? ? ? ? ? count += 1? ? ? ? ? ? for num in n:? ? ? ? ? ? ? ? num = int(num)? ? ? ? ? ? numbers.append(num)print(sum(numbers))print(count)
查看完整描述

4 回答

?
牧羊人nacy

TA貢獻1862條經(jīng)驗 獲得超7個贊

正如所指出的,您有一些縮進錯誤,但總體方法可以稍微簡化。

  • 你不需要count因為len(numbers)會給你同樣的答案。

  • 您可以在整條線上使用,re.findall()而不僅僅是一個word.

  • 您不需要條件,因為for如果沒有ns 將退出。

例如:

for line in fn:

    n = re.findall('[0-9]+', line)

    for num in n:

        num = int(num)

        numbers.append(num)

print(sum(numbers))

print(len(numbers))


Out[]:

445833

90

您還可以使用list.extend()替換內(nèi)部for循環(huán),導(dǎo)致:


In []:

import re


numbers = []


with open('regex_sum_42.txt', 'r') as fn:

    for line in fn:

        numbers.extend(int(num) for num in re.findall('[0-9]+', line))


print(sum(numbers))

print(len(numbers))


Out[]:

445833

90


查看完整回答
反對 回復(fù) 2023-05-23
?
白衣非少年

TA貢獻1155條經(jīng)驗 獲得超0個贊

使用更簡單的代碼,您可以避免出現(xiàn)這些錯誤的機會。

此代碼使用map內(nèi)置函數(shù)迭代所有結(jié)果re.findall并將它們轉(zhuǎn)換為 ,int然后再將它們?nèi)扛郊拥搅斜?(?numbers)。然后您可以打印sumlennumbers。

with?open('regex_sum_42.txt')?as?f:
??numbers?=?[*map(int,?re.findall('\d+',?f.read()))]?
???print(sum(numbers),?len(numbers))


查看完整回答
反對 回復(fù) 2023-05-23
?
森林海

TA貢獻2011條經(jīng)驗 獲得超2個贊

兩件事情:-

  1. 計數(shù)更新位置錯誤,將其向下移動到for循環(huán)中即可

  2. 總和是錯誤的,因為縮進numbers.append(num)不正確

試試下面的代碼

fn = open('regex_sum_42.txt','r')


import re

numbers = []

count = 0


for line in fn:

    line = line.split()

    for char in line:

        n=re.findall('[0-9]+',char)

        if len(n)>0:

            for num in n:

                count += 1

                num = int(num)

                numbers.append(num)

print(sum(numbers))

print(count)


查看完整回答
反對 回復(fù) 2023-05-23
?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

count += 1在錯誤的地方。


將它移到 的內(nèi)部for num in n:以使其對每個數(shù)字進行計數(shù)。


也向上移動numbers.append(num)到循環(huán)。這可確保添加所有 num值,而不僅僅是一行中的最后一個值。


fn=open('text.txt','r')


import re

numbers = []

count = 0


for line in fn:

    line = line.split()

    for char in line:

        n=re.findall('[0-9]+',char)

        if len(n)>0:

            for num in n:

                count += 1

                num = int(num)

                numbers.append(num)

print(sum(numbers))

print(count)


查看完整回答
反對 回復(fù) 2023-05-23
  • 4 回答
  • 0 關(guān)注
  • 274 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號