实验三 作业二

1 统计《水调歌头·明月几时有》字符出现次数。 明月几时有,把酒问青天。 不知天上宫阙,今夕是何年? 我欲乘风归去,又恐琼楼玉宇,高处不胜寒。 起舞弄清影,何似在人间! 转朱阁,低绮户,照无眠。 不应有恨,何事长向别时圆? 人有悲欢离合,月有阴晴圆缺,此事古难全。 但愿人长久,千里共婵娟。

N = 明月几时有,把酒问青天。不知天上宫阙,今夕是何年?我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间!转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?人有悲欢离合,月有阴晴圆缺,此事古难全。但愿人长久,千里共婵娟。"

代码:

a_counts = {}

for i in N:

    if i in a_counts:

        a_counts[i] +=1

    else:

        a_counts[i] =1

for key in a_counts:

    print("%s 出现了%d 次"%(key, a_counts[key]))

运行结果:

明 出现了1 次

月 出现了2 次

几 出现了1 次

时 出现了2 次

有 出现了4 次

, 出现了11 次

把 出现了1 次

酒 出现了1 次

问 出现了1 次

青 出现了1 次

天 出现了2 次

。 出现了5 次

不 出现了3 次

知 出现了1 次

上 出现了1 次

宫 出现了1 次

阙 出现了1 次

今 出现了1 次

夕 出现了1 次

是 出现了1 次

何 出现了3 次

年 出现了1 次

? 出现了2 次

我 出现了1 次

欲 出现了1 次

乘 出现了1 次

风 出现了1 次

归 出现了1 次

去 出现了1 次

又 出现了1 次

恐 出现了1 次

琼 出现了1 次

楼 出现了1 次

玉 出现了1 次

宇 出现了1 次

高 出现了1 次

处 出现了1 次

胜 出现了1 次

寒 出现了1 次

起 出现了1 次

舞 出现了1 次

弄 出现了1 次

清 出现了1 次

影 出现了1 次

似 出现了1 次

在 出现了1 次

人 出现了3 次

间 出现了1 次

! 出现了1 次

转 出现了1 次

朱 出现了1 次

阁 出现了1 次

低 出现了1 次

绮 出现了1 次

户 出现了1 次

照 出现了1 次

无 出现了1 次

眠 出现了1 次

应 出现了1 次

恨 出现了1 次

事 出现了2 次

长 出现了2 次

向 出现了1 次

别 出现了1 次

圆 出现了2 次

悲 出现了1 次

欢 出现了1 次

离 出现了1 次

合 出现了1 次

阴 出现了1 次

晴 出现了1 次

缺 出现了1 次

此 出现了1 次

古 出现了1 次

难 出现了1 次

全 出现了1 次

但 出现了1 次

愿 出现了1 次

久 出现了1 次

千 出现了1 次

里 出现了1 次

共 出现了1 次

婵 出现了1 次

娟 出现了1 次

2 统计英文儿歌《twinkle twinkle little star》中,使用到的单词及其出现次数。要求去除单词大小写的影响,不统计标点符号的个数,并按降序输出。

Twinkle, twinkle, little star,

How I wonder what you are!

Up above the world so high,

Like a diamond in the sky.

Twinkle, twinkle, little star,

How I wonder ## 标题what you are!

When the blazing sun is gone,

When he nothing shines upon,

Then you show your little light,

Twinkle, twinkle, all the night.

Twinkle, twinkle, little star,

How I wonder what you are!

代码:

lines = song.lower().strip()\
.replace(",","").replace(".",'').replace("!",'').replace("?",'').split("\n")
words = []

word_counts={}

for line in lines:

    words += line.split(" ")

for word in words:

    if word in word_counts:

        word_counts[word] = word_counts[word] + 1

    else:

        word_counts[word] = 1

word_key_count = []

for key in word_counts:

    key_count = [key, word_counts[key]]

    word_key_count.append(key_count)

#冒泡排序    此处也可以用sort函数代替。

for index in range(1,len(word_key_count)):

    for sub_index in range(index,0,-1):

        if word_key_count[sub_index][1] > word_key_count[sub_index - 1][1]:

            temp = word_key_count[sub_index - 1]

            word_key_count[sub_index - 1] = word_key_count[sub_index]

            word_key_count[sub_index] = temp

for index in range(len(word_key_count)):

    print(word_key_count[index][0],word_key_count[index][1])

3 在控制台输出如图所示一个8层的杨辉三角。

杨辉三角介绍:

每个数等于它上方两数之和

每行数字左右对称,由1开始逐渐变大

第n行的数字有n项,将n取8
代码:

line = [1]

print(line)

#其余7行

```python
n = 7

for i in range(n):

    temp_line = [] #保存下一行数字序列的列表

    for index in range(len(line) + 1): #第n+1行列表长度=第n行列表长度+1

        if index == 0: #列表中的第1个元素的值是1

            temp_line.append(1)

        elif index == len(line): #列表中的最后1个元素的值是1

            temp_line.append(1)

        else:

            #列表中的数的值等于它上方两数之和

            temp_line.append(line[index] + line[index - 1])

    line = temp_line #更新行数列

    print(line)

# 4 中华人民共和国居民身份证号码由17 位数字和1位校验码组成。其中,前6位为所在地编号,第7~14 位为出生年月日,第15~17位为登记流水号,其中第17位偶数为女性,奇数为男性。校验码的生成规则如下: 将前面的身份证号码17位数分别乘以不同的系数。第1~17位的系数分别为: 7,9,10,5,8 4,2,1,6,3,7,9,10,5,8,4,2,将这17 位数字和系数相乘的结果相加,用相加的结果与11求模,余数结果只可能是0,1,2,3,4,5,6,7,8,9,10这11个数字,它们分别对应的最后一位身份证的号码为1,0,x,9,8,7,6,5,4,3,2。例如,如果余数是2,最后一位数字就是罗马数字x,如果余数是10,则身份证的最后一位就是2。 请设计程序实现输入18位身份证号,辨别其真伪。若为真,则进一步判断性别: 若不是18位或身份证号非法,则提示重新输入。 提示:定义如下两个元组,对输入字符串进行遍历。 factor=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2) last=("1","O","x","9","8","7","6","5","4","3","2") 例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。 首先:我们计算3*7+4*9+0*10+5*5+...+1*2,前17位的乘积和是189 然后:用189除以11得出的结果是商17余2 最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。

```python

```python

```python

```python

```python

```python

```python

```python

```python
id_card=input('请输入身份证号码:')

jy = id_card[len(id_card)-1:len(id_card)]

if len(id_card) == 18:

    x= (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)

    s=0

    for i in range(1,len(id_card)):

        e = id_card[i-1:i]

        s = s + int(e)*x[i-1]

    b = s%11

    y=("1","O","x","9","8","7","6","5","4","3","2")



    c = y[b]

    if jy == c:

        print('经计算校验码为',c,'和实际相同,身份证合法!')

    else:

        print('经计算校验码为',c,'和实际不同,身份证不合法!')





版权声明:本文为weixin_41860600原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。