亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

為什么我只得到“0”輸出?

為什么我只得到“0”輸出?

白豬掌柜的 2024-01-27 16:05:19
我試圖搜索文本文件并確定文本文件中有多少行、元音、輔音和數值/字符。我的元音、輔音和數字輸出值似乎沒有正確計算。線路輸出總計已正確計算。ein = input("Please enter file name: ")vowels = set("AEIOUaeoiu")cons = set("BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwvyz")num = set("1234567890")count = 0Vcount = 0Ccount = 0Ncount = 0with open(ein) as ein_handle:    for line in ein_handle:        count += 1    for line in ein_handle:        if line in vowels:            Vcount += 1        elif line in cons:            Ccount += 1        elif line in num:            Ncount += 1print("the file has",count,"lines.")print("the file has",Vcount,"vowels.")print("the file has",Ccount,"consonants.")print("the file has",Ncount,"numerical characters.")
查看完整描述

2 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

第二個循環應該針對給定行中的每個字符。


試試這個:


ein = input("Please enter file name: ")

vowels = set("AEIOUaeoiu")

cons = set("BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwvyz")

num = set("1234567890")

count = 0

Vcount = 0

Ccount = 0

Ncount = 0

with open(ein) as ein_handle:

    for line in ein_handle:

        count += 1

        for letter in line:

            if letter in vowels:

                Vcount += 1

            elif letter in cons:

                Ccount += 1

            elif letter in num:

                Ncount += 1

print("the file has", count, "lines.")

print("the file has", Vcount, "vowels.")

print("the file has", Ccount, "consonants.")

print("the file has", Ncount, "numerical characters.")


另外,在第二個循環內得到 0 (而不是行數)的主要原因是因為當第一個循環執行時,它會在每次迭代時更新讀取偏移位置,直到它結束。因此,當第二個循環開始時,它從文件末尾開始,無法讀取任何內容。


查看完整回答
反對 回復 2024-01-27
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

這是另一種方法:


import os

d,_ = os.path.split(__file__)


ein = input("Please enter file name: ")

vowels = "aeoiu"

cons = "bcdfghjklmnpqrstvwvyz"

num = "1234567890"

Vcount = 0

Ccount = 0

Ncount = 0

with open(d+"\\" + ein) as ein_handle:

    lines = ein_handle.readlines()

    for line in lines:

        line = line.lower()

        for v in vowels:

            tmp = line

            while v in tmp:

                Vcount += 1

                tmp = tmp[tmp.find(v)+1:]

        for c in cons:

            tmp = line

            while c in tmp:

                Ccount += 1

                tmp = tmp[tmp.find(c)+1:]

        for n in num:

            tmp = line

            while n in tmp:

                Ncount += 1

                tmp = tmp[tmp.find(n)+1:]

print("the file has",len(lines),"lines.")

print("the file has",Vcount,"vowels.")

print("the file has",Ccount,"consonants.")

print("the file has",Ncount,"numerical characters.")


查看完整回答
反對 回復 2024-01-27
  • 2 回答
  • 0 關注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號