python程序设计——练习7

1.单词的区域

Description
输入一个列表 words ,列表中的元素全部为由字符串组成的单词,遍历整个列表,将所有可以使用键盘中同一区域字母打印出来的单词,和其所对应的颜色区域组成”键值对“存入字典当中,并输出。键盘如下图所示。
美式键盘 中:
红色区域由字符 “qweasdzxc” 组成。
蓝色区域由字符 “rtyfghvbn” 组成。
黄色区域由字符 “uiopjklm” 组成。
Input
一行仅由单词组成的字符串,单词之间用空格隔开。
Output
一行,单词区域的字典。
Sample Input 1

sea hello Dad Peace try pop

Sample Output 1

{‘Red’: [‘sea’, ‘Dad’], ‘Blue’: [‘try’], ‘Yellow’: [‘pop’]}

Sample Input 2

BLUE red yellow pink

Sample Output 2

{‘Red’: [], ‘Blue’: [], ‘Yellow’: []}

代码:

def check(x, y):
    for i in x:
        if y.find(i)==-1:
            return False
    return True
s = list(input().split())
a= {'qweasdzxc':'Red', 'rtyfghvbn':'Blue', 'uiopjklm':'Yellow'}
ans = {'Red':[], 'Blue':[], 'Yellow':[] }
for i in s:
    flag = False
    for j in a.keys():
        if check(i.lower(),j):
            flag = True
            ans[a[j]].append(i)
            break
print(ans)

2.字符串基本操作

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

aBBcc学123习一个BCc

Sample Output 1

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

代码:

s = input().upper()
cnt1, cnt2 = 0, 0
for i in s:
    if i >='0' and i <= '9':
        cnt2 += 1
    elif i >= 'A' and i <= 'Z':
        cnt1 += 1
print(f'字母字符数有{cnt1}个,阿拉伯数字字符数有{cnt2}个,其他字符有{len(s)-cnt1-cnt2}个,本条字符转换为:{s}')

3.0的组合

Description【题目描述】
给定一个包含若干个整数(可能存在重复整数)的列表,判断其中是否存在三个元素a,b,c,使得a+b+c=0?找出所有满足条件且不重复的这样的三个数的组合。【注意点】
1、所给的数字是可以重复的,所给数字为1,1,-2,0,0,0;
2、组合是不可以重复的,即[1,-1,2]和[2,-1,1],算是重复的,应该删除;
3、可以借助集合去除重复
Input【输入要求】
共一行,元素以空格隔开。
Output【输出要求】
共一行,为不重复组合的个数,不存在这样的组合就输出0。
Sample Input 1

-1 0 1 2 -1

Sample Output 1

2

Sample Input 2

8 6 7 9 8

Sample Output 2

0

代码:

a = list(map(int, input().split()))
a.sort()
ans = []
for i in range(len(a)):
    for j in range(i + 1, len(a)):
            for k in range(j + 1, len(a)):
                if a[i] + a[j] + a[k] == 0:
                    ans.append([a[i], a[j], a[k]])
print(len(set(ans)))

4.又见字符统计

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

5.寻找十全十美数

Description【题目描述】
如果一个n位数刚好包含了1至n中所有数字各一次则称它们是十全十美数。举例来说:四位数4123就是一个十全十美数。若找不到则输出“not found”。
Input【输入要求】
从键盘上输入一组整数,若有多个数以,隔开。
Output【输出要求】
若找不到则输出“not found”,若找到了则依次输出,每个数字占一行。
Sample Input 1

1243,322,321,1212,2354

Sample Output 1

1243
321

Sample Input 2

1212,2354

Sample Output 2

not found

代码:

def check(x):
    cnt = dict.fromkeys([chr(49 + i) for i in range(len(x))], 0)
    for i in x:
        if i in cnt.keys() and not cnt[i]:
            cnt[i] += 1
        else:
            return False
    return True
a = list(input().split(','))
f = False
for i in a:
    if check(i):
        f = True
        print(int(i))
if not f:
    print('not found')

6.矩阵相加

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()

7.水仙花数

题目内容:
编写程序实现以下功能:计算m到n之间的所有水仙花数并输出(水仙花数是一个三位整数,其值与各位数字的立方和相等)。
输入格式:
输入两个三位整数beg和end。
输出格式:
如果beg到end之间存在水仙花数,则每行输出一个水仙花数。如果beg到end之间不存在水仙花数,则输出“not found”。
输入样例:

111
121

输出样例:

not found

代码:

def check(x):
    res = 0
    for i in str(x):
        res += int(i)*int(i)*int(i)
    if res == x:
        return True
    return False
a, b = int(input()), int(input())
f = True
for i in range(a,b+1):
    if check(i):
        f = False
        print(i)
if f:
    print('not found')

8.所有奇数之和

Description
从键盘输入一个整数,求1~这个数之间所有奇数之和。
Input
一个整数。
Output
一个数。
Sample Input 1

3

Sample Output 1

4

代码:

n = int(input())
ans = 0
for i in range(1,n+1):
    if i % 2:
        ans += i
print(ans)

9.循环数数

Description
数字197可以被称为循环素数,因为197的三个数位循环移位后的数字:197,971,719均为素数。100以内这样的数字包括13个,2,3,5,7,11,13,17,31,37,71,73,79,97。要求任意正整数n以内一共有多少个这样的循环素数。
Input
共一行,为一个正整数n。
Output
n以内循环素数的值。
Sample Input 1

100

Sample Output 1

13

代码:

def check(x):
    if x == 2:
        return True
    for i in range(2,x):
        if x % i == 0:
            return False
    return True
n = int(input())
ans = 0
for i in range(2,n+1):
    f = True
    if check(i):
        s = str(i)
        for j in range(1,len(s)):
            a = s[j:] + s[:j]
            if not check(int(a)):
                f = False
                break
    else:
        f = False
    if f:
        ans += 1
print(ans)

10.任意整数各个位数之和

请输入任意一个正整数,求各个位数之和并输出。
输入样例1:

123

输出样例1:

sum=6

代码:

s = input()
ans = 0
for i in s:
    ans += int(i)
print('sum=%d' % ans)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值