python第7周(python学习题集)

29 篇文章 18 订阅
12 篇文章 24 订阅

这一周难度不大,尽量自己做做看看,然后可以评论,我们互相借鉴,欢迎关注,如果有用麻烦点个赞,谢谢。


目录

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

7-2 sdut-逆序的N位数 (10 分)

7-3 sdut-判断两个字符串是否为变位词 (10 分)

7-4 英文字母的大小写转换 (10 分)

7-5 求子串 (10 分)

7-6 查找字符串 (10 分)

7-7 保持数列有序 (10 分)

7-8 进制转换 (5 分)

7-9 判断素数 (20 分)

7-10 查找字符串中最长的数字子串 (100 分)


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

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

输入格式:

第一行输入字符串;

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

输出格式:

从右向左输出字符和索引(中间有一个空格)。下标最大的字符最先输出。每行一个。

输入样例:

pmispsissippi
s p

结尾无空行

输出样例:

11 p
10 p
8 s
7 s
5 s
4 p
3 s
0 p

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 10:06
n = input()
l1, l2 = map(str, input().split())
for i in range(len(n) - 1, -1, -1):
    if n[i] == l1:
        print(i, n[i])
    elif n[i] == l2:
        print(i, n[i])

7-2 sdut-逆序的N位数 (10 分)

读入一个正整数,(介于0与9223372036854775807之间)(前后可能有空白字符—空格或者Tab字符),位数不限,然后输出按位逆序的数字。

注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出7。

输入格式:

输入一个正整数。

输出格式:

输出按位逆序的数。

输入样例1:

     123456789    

结尾无空行

输出样例1:

987654321

结尾无空行

输入样例2:

10000000     

结尾无空行

输出样例2:

1

结尾无空行

输入样例3:

    0000000        

结尾无空行

输出样例3:

0

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 10:13
ll = input()
n = 0
q = 0
for i in ll:
    if i.isdigit():
        n += (10 ** q) * int(i)
        q += 1
print(n)

7-3 sdut-判断两个字符串是否为变位词 (10 分)

如果一个字符串是另一个字符串的重新排列组合,那么这两个字符串互为变位词。

比如,"heart" 与 "earth" 互为变位词,"Mary" 与 "arMy" 也互为变位词。“Hello world"与“worldHello"不是变位词。

输入格式:

第一行输入第一个字符串;

第二行输入第二个字符串。

输出格式:

若是变位词,输出:yes;否则,输出:no。

输入样例1:

Mary
arMy

结尾无空行

输出样例1:

yes

结尾无空行

输入样例2:

hello world
world hello

结尾无空行

输出样例2:

yes

结尾无空行

输入样例3:

I am very good.
verygood I am.

结尾无空行

输出样例3:

no

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 10:36
n1=input()
n2=input()
op=1
for i in n1:
    if n1.count(i)!=n2.count(i):
        op=0
        break
if op:
    print("yes")
else:
    print("no")

7-4 英文字母的大小写转换 (10 分)

输入一个大写字母c1和一个小写字母c2,把c1转换成小写,c2转换成大写,然后输出。

输入格式:

输入在一行中给出2个字母,第1个是大写字母c1,第2个是小写字母c2。

输出格式:

在一行中输出把c1转换成小写,c2转换成大写后的结果。数据之间留一个逗号。

输入样例:

Y e

输出样例:

y,E

 答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 10:42
n, m = map(str, input().split())
print("%s,%s" % (n.lower(), m.upper()))

7-5 求子串 (10 分)

输入一个字符串,输出该字符串的子串。

输入格式:

首先输入一个正整数k,然后是一个字符串s(可能包含空格,长度不超过20),k和s之间用一个空格分开。(k大于0且小于等于s的长度)

输出格式:

在一行中输出字符串s从头开始且长度为k的子串。

输入样例:

10 welcome to acm world

输出样例:

welcome to

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 10:53
n = input().split()
m = int(n[0])
q = 1
while m:
    for i in n[q]:
        if m > 0:
            print(i, end='')
            m -= 1
        else:
            q = 0
            break
    if q and m > 0:
        print(" ", end="")
        m -= 1
    q += 1

7-6 查找字符串 (10 分)

在一行上输入两个字符串s和英文字符串t,要求在s中查找t。其中,字符串s,t均不包含空格,且长度均小于80。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入2个长度不超过80的字符串s和t(s和t都不包含空格)。

输出格式:

对于每组测试数据,若在s中找到t,则输出“Found!”,否则输出“not Found!”。引号不必输出。

输入样例:

2
dictionary lion
factory act

输出样例:

not Found!
Found!

答案: 

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 11:04
n=int(input())
for i in range(n):
    m1,m2=map(str,input().split())
    if m2 in m1:
        print('Found!')
    else:
        print('not Found!')

7-7 保持数列有序 (10 分)

有n个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。

输入格式:

测试数据有多组,处理到文件尾。每组测试先输入两个整数n(1≤n≤100)和x,再输入n个从小到大有序的整数。

输出格式:

对于每组测试,输出插入新元素x后的数列(元素之间留一个空格)。

输入样例:

3 3 1 2 4

输出样例:

1 2 3 4

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 11:07
def shell_sort(a):        #希尔排序
    l = int(len(a) / 2)
    listp = []
    while l > 0:
        listp.append(l)
        l = int(l / 2)
    for q in listp:
        for i in range(q, len(a)):
            j = i
            while j - q >= 0 and a[j - q] > a[j]:
                swap(a, j, j - q)
                j = j - q

    for i in range(0, len(a)-1):
        print(a[i],end=' ')
    print(a[len(a)-1])

def swap(arr, a, b):
    arr[a] = arr[a] + arr[b]
    arr[b] = arr[a] - arr[b]
    arr[a] = arr[a] - arr[b]

try:
    while True:
        n = input().split()
        list1 = []
        for i in range(1, len(n)):
            list1.append(int(n[i]))
        shell_sort(list1)
except EOFError:
    pass

7-8 进制转换 (5 分)

输入一个十进制的整数。将它转换为二进制数、八进制数和十六进制数。

输入格式:

输入一个不超过100的十进制整数。

输出格式:

在一行内输出对应的二进制数、八进制数和十六进制数,以空格隔开。

输入样例:

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

8

结尾无空行

输出样例:

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

1000 10 8

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 11:43
n = int(input())
for i in range(2,len(bin(n))):
    print(bin(n)[i],end='')
print(' ',end='')
for i in range(2,len(oct(n))):
    print(oct(n)[i],end='')
print(' ',end='')
for i in range(2,len(hex(n))):
    print(hex(n)[i],end='')

7-9 判断素数 (20 分)

判断一个给定的正整数是否素数

输入格式:

输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于1000000 的需要判断的正整数

输出格式:

对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No

输入样例:

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

2
11
111

结尾无空行

输出样例:

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

Yes
No

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 11:55
def prime(n):
    k = 1
    for i in range(2, (n // 2) - 1):
        if n % i == 0:
            k = 0
            break
    if k:
        print("Yes")
    else:
        print("No")


n = int(input())
for i in range(n):
    m = int(input())
    prime(m)

7-10 查找字符串中最长的数字子串 (100 分)

查找一个字符串中最长的数字子串。

输入格式:

输入一个字符串。

输出格式:

输出最长的数字子串;如果字符串中没有数字,则输出’No’。

输入样例:

Enter 789 the final 8764end

结尾无空行

输出样例:

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

8764

结尾无空行

输入样例:

Enter the final

结尾无空行

输出样例:

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

No

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/13 12:04
n = input().split()
list1 = []
for i in range(len(n)):
    a = []
    if n[i].isalpha():
        continue
    else:
        for q in n[i]:
            if q.isdigit():
                a.append(q)
        if len(a) > len(list1):
            list1 = a
if list1!=[]:
    for i in list1:
        print(i,end='')
else:
    print("No")

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值