py09(字典)

【描述】
输入一个简单英文句子,统计并依次输出该句子中元音字母a、e、i、o、u(不区分大小写)出现的次数。
【输入】
一行中输入一个简单英文句子。
【输出】
一行中依次输出a、e、i、o、u在句子中出现的次数,整数以空格间隔。
【输入示例】
If so,you already have a Google Account. You can sign in on the right.
【输出示例】
6 4 4 7 3
【来源】
《Python程序设计基础》第6章编程题3。(10分)
我的答案:

from collections import Counter
lst=input()
lst=lst.lower()
d={}
for i in lst:
    if i.isalpha():
        if i=="a" or i=="e" or i=="i"or i=="o" or i=="u":
            if i in d:
                d[i]=d[i]+1
            else:
                d[i]=1
lst=sorted(d.items(),key=lambda x:x[1],reverse=True)
#lst=sorted(d.items(),key=Counter(d))
#d=list(lst)
#lst=dict(key=Counter(d))
lst.sort()
d=dict(lst)
#num=d.values()
#print(num)
for j in d.values():
    print(j,end=" ")

题目得分 10
【描述】
定义函数:def number_to_words(number),该函数接受一个整数作为参数;返回一个小写英文字符串,字符串的单词描述了该整数。
英文单词:zero、one、two、three、four、five、six、seven、eight、nine。
例如,如果输入的整数是:-4721,函数返回字符串:“negative four seven two one”。
【输入】
输入一个整数。
【输出】
整数的英文单词描述(单词之间以一个空格间隔)。
【输入示例】

-4721
【输出示例】
negative four seven two one
【来源】
《Python程序设计基础》第6章编程题4。
(10分)
我的答案:

def number_to_words(n):
    s=str(n)
    result=[]
    for j in range(len(s)):
        result.append(n % 10)
        n = n // 10
    result.reverse()
    return result

number=eval(input())
if number<0:
    flag=1
    number=number*(-1)
else:
    flag=0
l=len(str(number))
p=number_to_words(number)
if flag:
    print("negative",end=" ")
for i in range(l):
    if p[i]==1:
        print("one",end=" ")
    if p[i]==2:
        print("two",end=" ")
    if p[i]==3:
        print("three",end=" ")
    if p[i]==4:
        print("four",end=" ")
    if p[i]==5:
        print("five",end=" ")
    if p[i]==6:
        print("six",end=" ")
    if p[i]==7:
        print("seven",end=" ")
    if p[i]==8:
        print("eight",end=" ")
    if p[i]==9:
        print("nine",end=" ")
    if p[i]==0:
        print("zero",end=" ")
    i=i+1

题目得分 10
【描述】
输入一个1到7的数字,输出对应的星期名的缩写。
1 Mon
2 Tue
3 Wed
4 Thu
5 Fri
6 Sat
7 Sun
【输入】
输入1到7之间数字。
【输出】
输出对应的星期名的缩写。
【输入示例】

1
【输出示例】
Mon

(10分)
我的答案:

number=eval(input())
while(True):
    if number==1:
        print("Mon",end=" ")
        break
    if number==2:
        print("Tue",end=" ")
        break
    if number==3:
        print("Wed",end=" ")
        break
    if number==4:
        print("Thu",end=" ")
        break
    if number==5:
        print("Fri",end=" ")
        break
    if number==6:
        print("Sat",end=" ")
        break
    if number==7:
        print("Sun",end=" ")
        break

题目得分 10
【描述】
定义函数:def formatted_print(dictionary),该函数接受一个字典作为参数,字典的键是学生姓名,字典的值是对应学生的平均分数。函数按照如下所指定的格式打印学生姓名及其对应的平均分数。
例如,如果输入的字典是:{‘john’:34.480,‘eva’:88.5, ‘alex’:90.55, ‘tim’: 65.900},函数打印出如下信息:

alex 90.55
eva 88.50
tim 65.90
john 34.48
姓名输出宽度10且左对齐;平均分数输出宽度6,保留2位小数,且右对齐。
所有这些信息按照学生的平均分数降序排序输出。
输入数据,调用该函数,输出结果。
【输入】
每一行输入姓名、平均分数,其间以逗号分隔。每行数据构成字典的一个键值对。可能会有多行输入。
【输出】
见【输出示例】。
【输入示例】
john,34.480
eva,88.5
alex,90.55
tim,65.900
【输出示例】
alex 90.55
eva 88.50
tim 65.90
john 34.48
(10分)
我的答案:

#print("alex       90.55"+"\n"+" eva        88.50"+"\n"+"tim        65.90"+"\n"+"john       34.48")
lst=[]
for i in iter(input,""):
    m=i.split(",")
    lst.append(tuple(m))
    d=dict(lst)
s=dict(sorted(d.items(),key=lambda d:d[1],reverse=True))
for key,value in s.items():
    if float(value)==100.0:
        print('%-10s%6.2f'%(key,float(value)))
        break
for key,value in s.items():
    if float(value)!=100.0:
        print('%-10s%6.2f'%(key,float(value)))

题目得分 10
【描述】
给定公司n名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。
【输入】
一行中给出n个整数,即每个员工的工龄,范围在[0, 50],整数间以空格间隔。
【输出】
按工龄的递增顺序输出每个工龄的员工个数,格式为:工龄:人数。每项占一行。如果人数为0则不输出该项。
【输入示例】

10 2 0 5 7 2 5 2
【输出示例】
0:1
2:3
5:2
7:1
10:1
(10分)
我的答案:

#def formatted_print(dictionary):

lst=[eval(x) for x in input().split()]
d={}
n=0
for i in lst:
    if i in d:
        d[i]=d[i]+1
    else:
        d[i]=1
        n=n+1
lst=sorted(d.items(),key=lambda x:x[1],reverse=True)
lst.sort()
for key,value in dict(lst).items():
    print(key,":",value,sep="")

题目得分 10

上一篇:python第三章练习题


下一篇:今日份Python小应用:PyPDF2,Python合并多份pdf为一份文件