7-1 jmu-python-逆序输出 (5 分)

输入一行字符串,然后对其进行如下处理。

输入格式:
字符串中的元素以空格或者多个空格分隔。

输出格式:
逆序输出字符串中的所有元素。
然后输出原列表。
然后逆序输出原列表每个元素,中间以1个空格分隔。注意:最后一个元素后面不能有空格。

输入样例:

a b  c e   f  gh

输出样例:

ghfecba
['a', 'b', 'c', 'e', 'f', 'gh']
gh f e c b a

错误代码

s=input().split()
print(''.join(s)[::-1])
print(s)
print(' '.join(s)[::-1])

错误输出

>>> %Run 1.py
a b  c e   f  gh
hgfecba
['a', 'b', 'c', 'e', 'f', 'gh']
hg f e c b a

我的代码:

s=input().split()
t=s[:]
s.reverse()
print(''.join(s))
print(t)
print(' '.join(s))

输出:

>>> %Run 1.py
a b  c e   f  gh
ghfecba
['a', 'b', 'c', 'e', 'f', 'gh']
gh f e c b a

7-2 列表去重 (10 分)

输入一个列表,去掉列表中重复的数字,按原来次序输出!

输入格式:
在一行中输入列表

输出格式:
在一行中输出不重复列表元素

输入样例:
在这里给出一组输入。例如:

[4,7,5,6,8,6,9,5]

输出样例:
在这里给出相应的输出。例如:

4 7 5 6 8 9

我的代码:

s=eval(input())#需要,自动辨别类型
list2=[str(i) for i in s]#所有元素转化为str, 4-->'4'
a=[]
for i in list2:
    if i not in a:
        a.append(i)
print(' '.join(a))

7-4 统计并输出字符串中小写元音字母的个数 (10 分)

输入一个以换行结束的字符串,统计并输出字符串中小写元音字母的个数(小写元音字母: ‘a’,‘e’,‘i’,‘o’,‘u’)。

输入格式:
在一行中输入字符串

输出格式:
在一行中输出字符串中小写元音字母的个数

输入样例:
在这里给出一组输入。例如:

HelloI

输出样例:
在这里给出相应的输出。例如:

2

我的代码:

s=input()
num=0
for i in s:
    if i in ['u','o','i','e','a']:
        num+=1
print(num)

7-5 计算方阵的和,创建新方阵 (20 分)

输入 1 个正整数 n(1≤n),再按行读入 n 阶方阵 a 和 b, 生成并输出 n 阶方阵 c,c 中的元素是 a 和 b 对应元素的和. c[i][j]=a[i][j]+b[i][j] i,j=0,1,2…n-1(1<=c[i]<=99)

输入格式:
在第一行输入n 在第二行输入a方阵 在第一行输入b方阵

输出格式:
输出c方阵

输入样例:
在这里给出一组输入。例如:

3
1 2 3 4 5 6 7 8 9 
2 3 4 5 6 7 8 9 1

输出样例:
在这里给出相应的输出。例如:

3  5  7 
 9 11 13 
15 17 10
s=int(input())
a=input().split()#拆分
b=input().split()#拆分
l=len(a)
a=[int(x) for x in a]#变int
b=[int(x) for x in b]#变int
c=[]
k=0
for i in range(l):
    c.append(a[i]+b[i])#一开始就是个空数组,后面又对qi进行赋值,必会越界。
                    #最好的解决办法是用append或insert插入新元素。
for i in range(s):
    for j in range(s):
        print("{:2d}".format(c[k]),end=" ")
        k+=1
    print("")

7-7 分析活动投票情况 (10 分)

利用集合分析活动投票情况。第一小队有五名队员,序号是1,2,3,4,5;第二小队也有五名队员,序号6,7,8,9,10。输入一个得票字符串,求第二小队没有得票的队员

输入格式:
在一行中输入得票的队员的序列号,用逗号隔开。

输出格式:
一行中输出第二小队没有得票的队员序号。

输入样例:
在这里给出一组输入。例如:

1,5,9,3,9,1,1,7,5,7,7,3,3,1,5,7,4,4,5,4,9,5,10,9

输出样例:
在这里给出相应的输出。例如:

6 8

我的代码:

不太好。我猜测最好还是用str做

a=input()
a=a.strip()#去9后面的空格
a=a.split(',')
a=list(set(a))
a=[int(x) for x in a]
b=[1,2,3,4,5,6,7,8,9,10]
for x in a:
    b.remove(x)#他remove只能用int
for x in b:
    if x<=5:
        b.remove(x)
b=[str(x) for x in b]#为了输出 过于复杂
b=' '.join(b)
print(b)

7-8 jmu-python-重复元素判定 (30 分)

每一个列表中只要有一个元素出现两次,那么该列表即被判定为包含重复元素。
编写函数判定列表中是否包含重复元素,如果包含返回True,否则返回False。
然后使用该函数对n行字符串进行处理。最后统计包含重复元素的行数与不包含重复元素的行数。

输入格式:
输入n,代表接下来要输入n行字符串。
然后输入n行字符串,字符串之间的元素以空格相分隔。

输出格式:
True=包含重复元素的行数, False=不包含重复元素的行数
,后面有空格。

输入样例:

5
1 2 3 4 5
1 3 2 5 4
1 2 3 6 1
1 2 3 2 1
1 1 1 1 1

输出样例:

True=3, False=2

我的代码:

#这思想太绝了!!!!
a=int(input())
true=false=0
for i in range(a):
    b=input().split()
    if len(list(b))==len(set(b)):#set本身是无序不重复 的元素集
        false+=1
    else:
        true+=1
print('True=%d, False=%d'%(true,false))

7-11 两数之和 (20 分)

给定一组整数,还有一个目标数,在给定这组整数中找到两个数字,使其和为目标数,如找到,解是唯一的。找不到则显示 “no answer”。输出的下标按从小到大排序。用一重循环加字典实现。

输入格式:
在一行中给出这组数。 在下一行输入目标数

输出格式:
在一行中输出这两个数的下标,用一个空格分开。

输入样例1:
在这里给出一组输入。例如:

2,7,11,15
9

输出样例1:
在这里给出相应的输出。例如:

0 1

输入样例2:
在这里给出一组输入。例如:

3,6,9
10

输出样例2:
在这里给出相应的输出。例如:

no answer

我的代码:

a1=input()#(1,0)和(0,1)的处理上不太简便
b=int(input())
a=a1.split(',')
ai=[int(x) for x in a]
aa=list(enumerate(ai))
count=0

for i in range(len(ai)):
    for j in range(len(ai)):
        if ai[i]+ai[j]==b:
            if j<i:
                print("{:} {:}".format(j,i))
                count=1
if count==0:
    print("no answer")

7-13 求出歌手的得分 (20 分)

输入一个正整数n (n>4),再输入n个实数,求出歌手的得分(保留2位小数)。设一歌唱评奖晚会上有n(n>4)个评委为歌手打分.评分规则:每个评委依次打分,再去掉2个最高分和2个最低分,计算余下的分数平均值为歌手的得分.

输入格式:
在第一行中输入n 在第二行中输入n个分数

输出格式:
在一行中输出平均分数

输入样例:
在这里给出一组输入。例如:

10
10 10 9 9 9 8 8 8 7 7

输出样例:
在这里给出相应的输出。例如:

aver=8.50

我的代码:

#我感觉这个思路挺好,不知还有无更赞的?
s=int(input())
su=input().split()
si=[int(x) for x in su]
for i in range(len(si)):
    i=0
    while i<len(si)-1:
        if si[i]>si[i+1]:
            si[i],si[i+1]=si[i+1],si[i]
        i+=1
si.pop()
si.pop()
si.pop(0)
si.pop(0)
sum=0
for i in range(len(si)):
    sum+=si[i]
aver=sum/(len(si))
print("aver={:.2f}".format(aver))

7-14 输出字母在字符串中位置索引 (10 分)

输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。

输入格式:
第一行输入字符串
第二行输入两个字符,用空格分开。

输出格式:
反向输出字符和索引,即最后一个最先输出。每行一个。

输入样例:
在这里给出一组输入。例如:

mississippi
s p

输出样例:
在这里给出相应的输出。例如:

9 p
8 p
6 s
5 s
3 s
2 s

我的代码:

不太简便;另,list变为元组的题

s=input()
k=input().split()

c=list(s)
ca=list(enumerate(c))#变为元组
list1=[i for i,x in enumerate(c) if x==k[0]]
list2=[i for i,x in enumerate(c) if x==k[1]]

listt=list1+list2
listt.reverse()

for i in range(len(listt)):
    m=listt[i]
    print("{:} {:}".format(listt[i],ca[m][1]))

7-15 jmu-Java&Python-统计文字中的单词数量并按出现次数排序 (30 分)

现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。

注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。

基本版:
统计时,区分字母大小写,且不删除指定标点符号。

进阶版:

统计前,需要从文字中删除指定标点符号!.,: *?。 注意:所谓的删除,就是用1个空格替换掉相应字符。
统计单词时需要忽略单词的大小写。
输入说明
若干行英文,最后以!!!为结束。

输出说明
单词数量
出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。

输入样例1

failure is probably the fortification in your pole

it is like a peek your wallet as the thief when you
are thinking how to spend several hard-won lepta

when you are wondering whether new money it has laid
background because of you then at the heart of the

most lax alert and most low awareness and left it

godsend failed
!!!!!

输出样例1

46
the=4
it=3
you=3
and=2
are=2
is=2
most=2
of=2
when=2
your=2

输入样例2

Failure is probably The fortification in your pole!

It is like a peek your wallet as the thief when You
are thinking how to. spend several hard-won lepta.

when yoU are? wondering whether new money it has laid
background Because of: yOu?, then at the heart of the
Tom say: Who is the best? No one dare to say yes.
most lax alert and! most low awareness and* left it

godsend failed
!!!!!

输出样例2

54
the=5
is=3
it=3
you=3
and=2
are=2
most=2
of=2
say=2
to=2

作者: 郑如滨
单位: 集美大学
时间限制: 1600 ms
内存限制: 180 MB
代码长度限制: 16 KB
我的代码:

这里是引用
sorted(l, key=lambda x:x[1], reverse=True)

key参数代表了sorted()函数利用哪一个元素进行排列。而reverse参数就如同上面讲的一样,起到逆排的作用。默认情况下,reverse参数为False。

words=""
while True:
    a=input()
    if a=="!!!!!":
        break
    a=a.lower()
    for i in "!.,:*?":
        a=a.replace(i,' ')
    words=words+" "+a
words=words.split()
s={}
for i in words:
    if i in s:
        s[i]+=1
    else:
        s[i]=1
s=list(s.items())

s.sort(key=lambda x:x[0])
s.sort(key=lambda x:x[1],reverse=True)
print(len(s))
for i in range(10):
    word,count=s[i]
    print("{}={}".format(word,count))