用python编写一段程序,输入若干单词,按照单词长短进行排序,并统计所有单词中每个字母(a-z)出现的次数

Python013

用python编写一段程序,输入若干单词,按照单词长短进行排序,并统计所有单词中每个字母(a-z)出现的次数,第1张

1、解法:对输入的单词进行分割得到列表,遍历列表中的单词,二级遍历单词中的字符,判断字符是否存在字符字典中,存在则计数+1,不存在则初始化字典为1

2、知识点:字典、列表、for循环、if判断、input获得输入、print打印

3、代码如下:

# -*- coding: UTF-8 -*-

#简历一个字典,key=26个英文字母,value为出现次数

wordDict = {}

#获得输入单词字符串

str = input("请输入一串单词")

#用空格分割单词,存到列表

strArr = str.split(sep=' ')

#遍历列表中的单词

for word in strArr:

    #遍历单词中的字母

    for ch in word:

        #判断字典中是否存在键key

        if ch in wordDict:

            wordDict[ch] = wordDict.get(ch)+1#计数+1

        else:

            wordDict[ch] = 1#计数初始化为1

#打印输出

for key,value in wordDict.items():

    print("%s=%d"%(key, value))

例如:在C:\TDDOWNLOAD目录下有a.txt、b.txt两个文件,另有\sub1子文件夹,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt两个文件。

1. os.walk

os.walk()返回一个三元素的tuple:当前路径、子文件夹名称、文件列表。

>>>import os

>>>def fun( path ):

... for root, dirs, files in os.walk( path ):

... for fn in files:

... print root, fn

...

>>>fun( r'C:\TDDOWNLOAD' )

C:\TDDOWNLOAD a.txt

C:\TDDOWNLOAD b.txt

C:\TDDOWNLOAD\sub1 c.txt

C:\TDDOWNLOAD\sub1 d.txt

>>>

2. glob.glob

glob.glob()只接受一个参数,这个参数既代有路径,又代有匹配模式,返回值为一个列表。注意,glob.glob()无法直接穿透子文件夹,需要自己处理:

>>>def fun( path ):

... for fn in glob.glob( path + os.sep + '*' ): # '*'代表匹配所有文件

... if os.path.isdir( fn ): # 如果结果为文件夹

... fun( fn ) # 递归

... else:

... print fn

...

>>>fun( r'C:\TDDOWNLOAD' )

C:\TDDOWNLOAD\a.txt

C:\TDDOWNLOAD\b.txt

C:\TDDOWNLOAD\sub1\c.txt

C:\TDDOWNLOAD\sub1\d.txt

>>>

'*'为匹配模式,代表匹配所有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。

a = [[1, 2, 3, 4, -1], [21, 23, 34, 45, 1], [3, 4, 34, 2, 1]]

cl_num = -1

for i in range(len(a)-1):

    this_line = a[i][cl_num]

    next_line = a[i+1][cl_num]

    issame = (this_line == next_line)

    if issame:

        print('第{0}行第{1}列与第{2}行第{1}列相等'.format(str(i), str(cl_num), str(i+1)))

    else:

        print('第{0}行第{1}列与第{2}行第{1}列不相等'.format(str(i), str(cl_num), str(i+1)))

        

# 第0行第-1列与第1行第-1列不相等

# 第1行第-1列与第2行第-1列相等

此为按你要求,比较相邻行的最后一列的值。

下次去stackoverflow上查答案或提问吧。