Python题目

Python题目,第1张

这并不是什么困难的题目吧?属于很基础的内容了。

不考虑性能与功能健壮的情况下,伪代码如下:

以r模式打开文件:

    逐行读出:

        行计数加1

        以空格拆分行为一个列表,

        词计数增加列表长度

        字符数增加列表所有元素的长度之和

输出结果

在python的安装目录下有文件LICENSE.txt,以它为例:

linecount = wordcount = charcount = 0

with open('LICENSE.txt', 'r') as f:

    for line in f:

        linecount += 1

        words = line.split(' ')

        wordcount += len(words)

        charcount += sum(len(_) for _ in words)

print(linecount, wordcount, charcount)

运行输出结果:

605 5258 25385

至于更进一步,就需要考虑一些意外的情况了:

是否有chr(9)替代了某些空格?它会影响对line的拆分,进而影响单词数与字符数的统计;

是否有连续的空格,它的影响同上;

除空格外,是否还有不计入字符数据的字符(比如标点符号之类的)?

要处理这些问题,一般都需要在将一行拆分为words的过程中或紧随其后去处理。如有必要,“line.split(' ')”可以替换为一个自行编写的函数如splitbyword(),并在其中实现上述相关的功能。

用我的程序有以下好处:

一、避免第一个单词出现前的空格计算为单词。

二、避免字符窜中间的多个连续空格重复计算单词个数。

#include<stdio.h>

int strwordcount(char p[20])

{

int i=0

int count=0

if(p[0]==' ')

i++

for(i=1i<20i++)

{ if(p[i]==' '&&p[i-1]!=' ')

count++

}

return count+1

}

void main()

{

int c

char p[20]

gets(p)

c=strwordcount(p)

printf("%d\n",c)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7906398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存