python程序设计——练习4

1.单词统计 — part one

【题目描述】
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
【输入描述】
输入给出一行字符。
【输出描述】
在一行中输出单词个数。
【输入样例1】

Let’s go to room 209.

【输出样例1】

5

代码:

s = input()
print(len(s.split()))

2.列表求平均值

【题目描述】
依次输入1到多个整数,并保存在列表中,求此列表的平均值。
【输入描述】
1到多个整数,以空格隔开。
【输出描述】
输出此列表的平均值,四舍五入保留一位小数。
【输入样例1】

1 2 3 4 5

【输出样例1】

3.0

代码:

s = input()
sum = 0
for i in s.split():
    sum += int(i)
print('%.1f' % (sum / len(s.split())))

3.不常见的单词

Description
给定两个字符串 S1 和 S2 ,确保 S1 与 S2 都只有空格和单词组成。且保证每个单词仅由小写字母组成。
如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却没有出现 ,那么这个单词就是 不常见的 。
给你两个 句子s1和s2 ,返回所有不常用单词的列表。返回列表中单词要求按 S1 中出现,S2中出现的顺序组织。
Input
两行,一行代表一个字符串。
Output
一行,不常见单词列表。
Sample Input 1

this apple is sweet
this apple is sour

Sample Output 1

[‘sweet’, ‘sour’]

代码:

s1 = input()
s2 = input()
ans = []
for i in s1.split():
    if s1.split().count(i) == 1 and s2.split().count(i) == 0:
        ans.append(i)
for i in s2.split():
    if s2.split().count(i) == 1 and s1.split().count(i) == 0:
        ans.append(i)
print(ans)

4.列表合并去重

【题目描述】
输入两个列表alist和blist,要求列表中的每个元素都为正整数且不超过10;合并alist和blist,并将重复的元素去掉后输出一个新的列表clist。同时为保证输出结果一致,请将列表clist内元素按升序排序之后再输出。
【输入描述】
共两行,每一行都用来输入列表中的元素值,以空格隔开。
【输出描述】
共一行,以列表形式打印输出。
【输入样例1】

1 2 3
4 3 2

【输出样例1】

[1, 2, 3, 4]

代码:

a = list(map(int, input().split()))
b = list(map(int, input().split()))
print(list(set(a + b)))

5.有序列表插入元素

【输入描述】
从键盘上获取一个已按升序排好的整数列表(测试样例的数都已严格按照升序输入),用户输入一个待插入的整数,编写程序,实现插入该数后,列表后仍保持有序。
【输入描述】
样例输入:
1、列表元素由空格隔开。
2、待插入的整数。
【输出描述】
样例输出:
输出后的列表为X,插入后的索引值为X。
若插入元素的值与已有列表中的元素相同,则X为最大下标索引值。
【输入样例1】

1 2 3 3 3 4
3

【输出样例1】

输出后的列表为[1, 2, 3, 3, 3, 3, 4],插入索引值为5

代码:

a = list(map(int, input().split()))
b = eval(input())
a.append(b)
a.sort()
print('输出后的列表为', end = '')
print(a, end = '')
print(',插入索引值为%d' % (a.index(b) + a.count(b) - 1))

6.乘积的列表

【题目描述】
给定一个包含若干个整数的列表alist,要求返回输出列表blist,blist中的元素为除与alist对应位置上的元素之外其余各元素的乘积。(注:原列表的1位于1号位置,结果应该等于除去1号位置的其他元素的积,对应输出6=23,原列表的2,对应输出3=13,原列表的3,对应输出2=1*2)
【输入描述】
共一行,元素以空格隔开。
【输出描述】
共一行,为一个列表。
【输入样例1】

1 2 3

【输出样例1】

[6, 3, 2]

代码:

a = list(map(int, input().split()))
sum = 1
for i in a:
    sum *= i
if not sum:
    b = []
    for i in range(len(a)):
        cnt = 1
        for j in range(len(a)):
            if j != i:
                cnt *= a[j]
        b.append(cnt)
    print(b)
else:
    b = [sum // i for i in a]
    print(b)

7.列表排列

【题目描述】
给定一个由数字组成的列表sList,编写程序将所有 0 移动到列表的末尾,同时保持非零元素的相对顺序。
【输入描述】
共一行,元素以英文逗号隔开。
【输出描述】
共一行,为重新排列好的列表。
【输入样例1】

1,3,4,1.2,0,0,0.0,2,3,5.6

【输出样例1】

[1, 3, 4, 1.2, 2, 3, 5.6, 0, 0, 0.0]

代码:

a = list(map(eval, input().split(',')))
b = []
for i in a:
    if i:
        b.append(i)
for i in a:
    if not i:
        b.append(i)
print(b)

8.工作日的力量part two

【题目描述】
如果一个人在一年365天,每天进步1%,则累计获得的进步一定比工作日模式下累计获得的进步要大。那么在工作日的模式下,要努力到什么水平,才能达到与每天努力1%一样呢?假设现有两种努力模式:(1)一年365天,每天进步1%,不停歇;(2)一年365天,每工作n天休息1天,假设在休息日下降1%,工作日每天进步x%。请编写程序计算出,当两种工作模式取得的成果一样时,x的值。
【输入描述】
一个整数n。
【输出描述】
共一行,为x的值,保留三位有效数字。
【输入样例1】

4

【输出样例1】

工作日的努力参数是:0.015

代码:

def find(x):
    res = 1
    for i in range(1,366):
        if i % (n + 1) == 0:
            res *= 0.99
        else:
            res *= (1 + x)
    return res
n = int(input())
ans = 0.01
while find(ans) < 1.01 ** 365:
    ans += 0.0001
print('工作日的努力参数是:%.3f' % ans)

9.寻找不一样的约数

【题目描述】
输入两个数n与m,寻找n和m之间不同的约数,并按不同约数的大小从小到大进行排序输出。
例如8的约数有1,2,4,8。9的约数有1,3,9,所以不同的约数是2、3、4、8、9。
【输入描述】
两个正整数n和m,中间以空格隔开。
【输出描述】
输出不同的约数,数据间以逗号进行分隔。若没有不同约数,则输出“not found”。
【输入样例1】

8 9

【输出样例1】

2,3,4,8,9

【输入样例2】

4 16

【输出样例2】

8,16

【输入样例3】

5 5

【输出样例3】

not found

代码:

n, m = map(int, input().split())
a, b = [], []
for i in range(1, n + 1):
    if n % i == 0:
        a.append(i)
for i in range(1,m + 1):
    if m % i == 0:
        b.append(i)
ans = []
for i in a:
    if i not in b:
        ans.append(i)
for i in b:
    if i not in a:
        ans.append(i)
ans.sort()
if len(ans) == 0:
    print('not found')
else:
    for i in range(len(ans)):
        if not i:
            print(ans[i], end = '')
        else:
            print(',%d' % ans[i], end = '')

10.又见字符统计

【题目描述】
输入英文字符,请按照字母表顺序统计字符串中所有出现的字母的个数(计数时不区分大小写),若输入的内容有误,则输出Error!
【输入描述】
一串只包含英文字母的字符。
【输出描述】
按题目要求输出。
【输入样例1】

HelloWorld

【输出样例1】

[0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 3, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0]

【输入样例2】

Hello, World!

【输入样例2】

Error

代码:

s = input()
ans = [0 for i in range(26)]
s = s.upper()
flag = 0
for i in s:
    if i >= 'A' and i <= 'Z':
        ans[ord(i) - ord('A')] += 1
    else:
        flag = 1
if flag:
    print('Error')
else:
    print(ans)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值