python程序设计——练习11

1.又见字符统计

【题目描述】
输入英文字符,请按照字母表顺序统计字符串中所有出现的字母的个数(计数时不区分大小写),若输入的内容有误,则输出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().lower()
cnt = dict.fromkeys([chr(97 + i) for i in range(26)], 0)
if s.isalpha():
    for i in s:
        cnt[i] += 1
    print([i for i in cnt.values()])
else:
    print('Error')

2.字符串逆序

Description
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。
Input
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。
Output
在一行中输出逆序后的字符串。
Sample Input 1

Hello World!

Sample Output 1

!dlroW olleH

代码:

print(input()[::-1])

3.矩阵相加

Description
正整数n,代表要输入的是n*n的矩阵,两个矩阵由用户输入,计算输出两个矩阵相加的和。
Input
一个整数n,和两个矩阵的值。
Output
两个矩阵相加后的值,每个元素占三位,中间对齐,元素之间由两个空格组成。
Sample Input 1

3
12 3 -5
1 -9 0
3 6 8
1 8 9
6 5 4
3 2 1

Sample Output 1

13 11 4
7 -4 4
6 8 9

代码:

n = int(input())
a = [[]for i in range(n)]
for i in range(n):
    a[i] = list(map(int,input().split()))
for i in range(n):
    a[i] = [j + k for j, k in zip(a[i], list(map(int,input().split())))]
for i in range(n):
    for j in range(n):
        print(f'{a[i][j]:^3}', end='  ')
    print()

4.字符串基本操作

Description
输入一行字符串,输出每行英文字母、数字及其他字符的个数,并将字符串中的小写字母变成大写字母,大写字母保持不变后输出。
Sample Input 1

aBBcc学123习一个BCc

Sample Output 1

字母字符数有8个,阿拉伯数字字符数有3个,其他字符有4个,本条字符转换为:ABBCC学123习一个BCC

代码:

s = input().upper()
cnt1, cnt2, cnt3 = 0, 0, 0
for i in s:
    if i.isupper():
        cnt1 += 1
    elif i.isdigit():
        cnt2 += 1
    else:
        cnt3 += 1
print(f'字母字符数有{cnt1}个,阿拉伯数字字符数有{cnt2}个,其他字符有{cnt3}个,本条字符转换为:' + s)

5.不常见的单词

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’]

代码:

s = input().split() + input().split()
print([i for i in s if s.count(i) == 1])

6.列表的基本操作

【题目描述】
输入一串用空格隔开的数字字符,请依次将他们放入列表中保存,并去除列表中的重复项,最后将列表中的元素按数值大小从小到大进行排序,输出排好序后下标为i的字符。
【注意】测试样例中保证排完序的列表中至少有i+1个元素。
【输入描述】
第一行:一串以空格隔开的数字字符串。
第二行:待输出列表的下标值i。
【输出描述】
排好序的列表中下标为i的元素。
【输入样例1】

9 7 17 6 7 5 8
4

【输出样例1】

9

代码:

a = list(set(list(map(int, input().split()))))
a.sort()
print(a[int(input())])

7.打印空心三角形

Description
输入任意一个大于零的整数N,根据输入的整数不同打印出不同行数的空心三角形。
Input
一个大于0的整数。
Output
一个空心三角形。
Sample Input 1

6

Sample Output 1

*
**
* *
*  *
*   *
******

代码:

n = int(input())
for i in range(1,n):
    for j in range(0,i):
        if j==i-1:
            print('*')
        elif j==0:
            print('*',end='')
        else:
            print(' ',end='')
for i in range(n):
    print('*',end='')

8.温度转换

Description
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。转换算法如下:(C表示摄氏度、F表示华氏度)C = ( F - 32 ) / 1.8;F = C * 1.8 + 32。
要求如下:
(1) 输入输出的摄氏度可采用大小写字母C结尾,温度可以是整数或小数,如:12.34C指摄氏度12.34度;
(2)输入输出的华氏度可采用大小写字母F结尾,温度可以是整数或小数,如:87.65F指华氏度87.65度;
(3)输出保留小数点后两位,输入格式错误时,输出提示:输入格式错误;
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
Sample Input 1

12.34C

Sample Output 1

54.21F

Sample Input 2

12.34

Sample Output 2

输入格式错误!

Sample Input 3

12.34c

Sample Output 3

54.21f

代码:

s = input()
if s[-1] in ['F', 'f']:
    print('%.2f%c' % ((float(s[:-1])-32)/1.8, chr(ord(s[-1])-3)))
elif s[-1] in ['C', 'c']:
    print('%.2f%c' % (float(s[:-1])*1.8+32, chr(ord(s[-1])+3)))
else:
    print('输入格式错误!')

9.字符串循环左移

Description
给定一个字符串S,要求把S的前k个字符移动到S的尾部,如把字符串“abcdef”前面的2个字符‘a’、‘b’移动到字符串的尾部,得到新字符串“cdefab”,称作字符串循环左移k位。
Input
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。
Output
在一行中输出循环左移N次后的字符串。
Sample Input 1

abcd
2

Sample Output 1

cdab

代码:

s, n = input(), int(input())
print(s[n:] + s[:n])

10.列表合并去重

【题目描述】
输入两个列表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(sorted(list(set(a + b))))

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值