PTA7(python3)

7-1 找最后的字符 (30 分)

输入一个字符串,输出最后一个字符

输入格式:
输入1个字符串

输出格式:
最后一个字符

输入样例:
12345678
输出样例:
8

lostr = str(input())

print(lostr[-1])

7-2 重要的事情说N遍 (20 分)

对重要的事情,阿福老师会反复说N多遍。 提示:用字符串 * 和 +

输入格式:
输入包含2行,第一行是阿福要重复说多遍的一句话,也就是阿福想强调的重要事情;第2行为一个整数N(0<N<10)

输出格式:
将阿福要强调的重要事情,反复输出N遍,具体格式参见样例。

输入样例:
Go
3
输出样例:
Go!Go!Go!

def prime(st,n):
    for i in range(n):
        print(st+"!",end="")



st = str(input())
n = int(input())
prime(st,n)

7-3 号码牌的制作 (10 分)

7-3 号码牌的制作 (10 分)
打印一个号码牌。号码牌由边框和号码构成,组成边框的字符分为角落字符,水平字符和垂直字符。

输入格式:
输入一个字符(如:±|2008161876)串,字符串的前三个字符分别代表组成边框的角落字符,水平字符和垂直字符,从第四个字符开始到最后表示号码数字。

输出格式:
打印出由边框包围的号码。如:
在这里插入图片描述

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

#=$2020
输出样例:
在这里给出相应的输出。例如:

在这里插入图片描述

输入样例:
在这里给出一组输入。例如:
在这里插入图片描述

输出样例:
在这里给出相应的输出。例如:
在这里插入图片描述

lonst = str(input())
j1 = lonst[0]
j2 = lonst[1]
j3 = lonst[2]


print(j1+(len(lonst)-3) * j2+j1)
print(j3+lonst[3:]+j3)
print(j1+(len(lonst)-3) * j2+j1)

7-4 统计字符串中指定字符的个数 (30 分)

输入一个字符串和一个字符,统计这个字符在字符串中出现的次数

输入格式:
输入2行。第1行是字符串,第2行是要查找的字符。

输出格式:
字符出现的次数

输入样例:
abcdefgabcdefg
a
输出样例:
2

lonst = str(input())

data = str(input())

print(lonst.count(data))

7-5 字符串消除空格 (30 分)

输入一个字符串,将这个字符串中所有的空格删除

输入格式:
输入一个字符串

输出格式:
输出删除空格后的字符串

输入样例:
i am a boy! you are a girl!
输出样例:
iamaboy!youareagirl!

lonst = str(input())

print(lonst.replace(" ",""))

7-6 统计指定数字和 (30 分)

输入一个数字的字符串和一个数字字符(1到9),统计这个数字在字符串中出现的次数,并累加。例如有个字符串是1234321,查找2这个数字,在字符串中出现了2次,所以累计和就是2+2=4

输入格式:
输入2行。第1行是字符串,第2行是要查找的数字。

输出格式:
指定数字出现的累加和

输入样例:
1234321
2
输出样例:
4

data = int(input())
so = int(input())
n = 0
while data:
    a = data % 10
    if a == so:
        n =n +1
    data = data // 10


print(n * so)

7-7 计算有n个字符串中最长的字符串长度 (40 分)

编写程序,用于计算有n(1<n<10)个字符串中最长的字符串的长度。前导空格不要计算在内!

输入格式:
在第一行中输入n,接下的每行输入一个字符串

输出格式:
在一行中输出最长的字符串的长度

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

4
blue
yellow
red
green
输出样例:
在这里给出相应的输出。例如:

length=6

n = 0
shu = int(input())
for i in range(shu):
    lostr = str(input())
    lostr = lostr.strip()
    if n < len(lostr):
        n = len(lostr)

print("length={}".format(n))

7-8 判断两个字符串是否为变位词 (40 分)

7-8 判断两个字符串是否为变位词 (40 分)
如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy”也互为变位词。

输入格式:
第一行输入第一个字符串,第二行输入第二个字符串。

输出格式:
输出“yes”,表示是互换词,输出“no”,表示不是互换词。

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

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

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

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

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

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

no

lostr = str(input())
lonst = str(input())
flag = 0
if len(lonst) != len(lostr):
    print("no")

else:
    for i in range(len(lonst)):
        if lonst[i] in lostr:
            flag = 1
        else:
            flag = 0
            break

    if flag == 0:
        print("no")
    else:
        print("yes")

7-9 判断字符串结尾方式 (40 分)

输入2个字符串,判断其中一个字符串是否是以另一个字符串结尾

输入格式:
输入2行,每行一个字符串数据

输出格式:
如果第1个字符串以第2个字符串结尾,输出第2个字符串 如果第2个字符串以第1个字符串结尾,输出第1个字符串 如果两个字符串互为对方的结尾字符,输出’all’ 如果都不满足,输出’no’

输入样例:
abc123
123
输出样例:
123

lonst = str(input())
lostr = str(input())
flag = 0
if lonst == lostr:
    print("all")
elif len(lonst) == len(lostr):
    lonst[-1] != lostr[-1]
    print("no")
else:
    if len(lonst) > len(lostr):
        for i in range(1,len(lostr)+1):
            if lonst[-i] == lostr[-i]:
                
                flag = 1
            else:
                flag = 0



        if flag == 1:
            print(lostr)
        else:
            print("no")
    elif len(lonst) < len(lostr):
        for i in range(1,len(lonst)+1):
            if lonst[-i] == lostr[-i]:
                
                flag = 1
            else:

                flag = 0

        if flag == 0:
            print("no")
        else:
            print(lonst)

7-10 纵向输出字符串 (5 分)

本题目要求读入一个宽度小于20的字符串,然后将输入按照一个字符占一行的格式输出。

输入格式:
输入一个宽度小于20的字符串。

输出格式:
对每一组输入,将输入按照一个字符占一行的格式输出。

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

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

G
o
o
d
!

lonst = str(input())
for i in range(len(lonst)):
    print(lonst[i])

7-11 判断字符串头尾结构 (30 分)

输入一个字符串,判断是否头尾对应的。比如字符串’abcba’就是头尾对应的。比如字符串’±**-+’,也是头尾对应的。比如字符串’abcbb’就不是头尾对应的。

输入格式:
输入一个字符串

输出格式:
如果头尾对应,输出’yes’ 否则输出’no’

输入样例:
abcba
输出样例:
yes

lonst = str(input())
flag = 0
if len(lonst) == 0 or len(lonst) == 1:
    print("no")
else:
    for i in range(int(len(lonst) / 2)):
        if lonst[i] == lonst[-(i + 1)]:
            flag = 1
        else:
            flag = 0
            break
    if flag == 0:
        print("no")
    else:
        print("yes")

7-12 jmu-python-输入输出-计算字符串中的数 (10 分)

将字符串中的每个数都抽取出来,然后统计所有数的个数并求和。

输入格式:
一行字符串,字符串中的数之间用1个空格或者多个空格分隔。

输出格式:
第1行:输出数的个数。
第2行:求和的结果,保留3位小数。

输入样例:
2.1234 2.1 3 4 5 6
输出样例:
6
22.223

lonst = str(input())
lostr = lonst.split()

n = 0
sum = 0
for i in range(len(lostr)):
    n = n + 1
    sum = sum + float(lostr[i])


print(n)
print("{:.3f}".format(sum))

7-13 截取字符串 (10 分)

用户在三行中分别输入一个字符串s和两个整数m,n,输出字符串s中位于m和n(包括m但不包括n,m<n)之间的子字符串。

输入格式:
例如,输入’Python programming‘,2,5。

输出格式:
例如,输出为’tho‘。

输入样例:
Python programming
2
5
输出样例:
在这里给出相应的输出。例如:

tho

lonst = str(input())
m = int(input())
n = int(input())
print(lonst[m:n])

7-14 字符串判等 (100 分)

判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。

输入格式:
两行,每行包含一个字符串。若两个字符串相等,输出YES,否则输出NO。

输出格式:
请在这里描述输出格式。例如:对每一组输入,在一行中输出A+B的值。

输入样例:
样例1

a A bb BB ccc CCC
Aa BBbb CCCccc
样例2

a A bb BB ccc CCCa
Aa BBbb CCCccc
输出样例:
样例1

YES
样例2

NO

lonst = str(input())
lostr = str(input())

lonst = lonst.replace(" ","")
lostr = lostr.replace(" ","")
lonst=lonst.upper()
lostr=lostr.upper()
'''
lonst = lonst.split()//split方法会把str转化为list
lostr = lostr.split()
'''
if lonst == lostr:
    print("YES")
else:
    print("NO")

7-15 小写到大写的转换 (高教社,《Python编程基础及应用》习题2-8) (2 分)

从键盘读取一个英文字符串,将其转换为大写,然后输出。

输入格式:
英文字符串,可以包括英文字符,数字及符号。

输出格式:
转换为大写后的英文字符串。

输入样例:
cvoid2020
输出样例:
CVOID2020

lonst = str(input())
lonst = lonst.upper()
print(lonst)

7-16 统计满足特定条件的字符数 (30 分)

输入字符串A(没有重复字符),输入字符串B,求在字符串A中字符的个数,这些字符必须同时又在字符串B中。提示:用in运算符。

输入格式:
一行输入字符串A。 一行输入字符串B。

输出格式:
一行输出字符数。

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

AEIOU
HELLO World!
输出样例:
在这里给出相应的输出。例如:

2

lonst = str(input())
lostr = str(input())
n = 0
for i in lonst:
    if i in lostr:
        n = n + 1
print(n)

7-17 字符串A-B (100 分)

本题要求你计算A-B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A-B。

输入格式:
输入在2行中先后给出字符串A和B。每个字符串都是由可见的ASCII码组成,最后以换行符结束。

输出格式:
在一行中打印出A-B的结果字符串。

输入样例:
I love Python! It’s a fun game!
aeiou
输出样例:
I lv Pythn! It’s fn gm!

lonst = str(input())
lostr = str(input())

for i in lostr:
    if i in lonst:
        lonst = lonst.replace(i,"")


print(lonst)

7-18 单词倒排 (40 分)

编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。

输入格式:
输入为一行字符串。

输出格式:
输出为按要求倒序后的字符串。

输入样例:
I am a student
输出样例:
student a am I

alist = list(input().split())
for i in range(len(alist)):
    print(alist[-(i+1)],end="")
    if -(i+1) != -len(alist):
        print(" ",end="")
        

#print(alist[::-1])//这样会输出一个列表,/(ㄒoㄒ)/~~

7-19 密码强度 (10 分)

本题目要求根据输入密码字符串(字符串长度大于6),输出密码强度。规则:密码要求只能包含大写字母、小写字母、数字及下划线,如果只包含其中的一种,则密码强度为1;若包含其中的两种,则密码强度为2;若包含其中的三种,则密码强度为3;若包含其中的四种,则密码强度为4。

输入格式:
输入长度大于6的字符串。

输出格式:
输出密码强度。

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

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

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

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

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

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

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

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

4

alist = list(input())
num = 0
xiao = 0
da = 0
xia = 0
for i in alist:
    if '9' >= i >= '0':
        num = 1

    elif 'z' >= i >= 'a':
        xiao = 1

    elif 'Z' >= i >= 'A':
        da = 1

    elif i == '_':
        xia = 1


print(num + xiao + da + xia)

7-20 统计字符串中不同种类的字符个数 (10 分)

本题目要求读入一个字符串,统计字符串中字母、数字、空格、其它字符的个数。

输入格式:
输入一行由任意字符组成的字符串。

输出格式:
统计字符串中字母、数字、空格、其它字符的个数。

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

2a and Am3,MNak888!..
输出样例:
在这里给出相应的输出。例如:

letters=10,digits=5,spaces=2,others=4

alist = list(input())
letters = 0
digits = 0
spaces = 0
other = 0

for i in alist:
    if '9' >= i >= '0':
        digits = digits + 1
    elif i.isalpha():
        letters = letters + 1
    elif i == ' ':
        spaces = spaces + 1
    else:
        other = other + 1

print("letters={},digits={},spaces={},others={}".format(letters,digits,spaces,other))

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

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

输入格式:
输入一个字符串。

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

输入样例:
Enter 789 the final 8764end
输出样例:
在这里给出相应的输出。例如:

8764
输入样例:
Enter the final
输出样例:
在这里给出相应的输出。例如:

No

begin = 0
end = 0
n = 0
flag = 0
lonst = str(input())
for j in lonst:
    if j.isdigit():
        flag = 1
        break

if flag == 0:
    print("No")
else:
    for i in range(len(lonst)):
        if '9' >= lonst[i] >= '0':
            n = n + 1
            if n:
                begin = n
                end = i
        else:
            n = 0
    print(lonst[end - begin + 1:end + 1])

7-22 jmu-python-统计字符个数 (10 分)

输入一个字符串,统计其中数字字符及小写字符的个数

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

输出格式:
共有?个数字,?个小写字符,?填入对应数量

输入样例:
helo134ss12
输出样例:
共有5个数字,6个小写字符

digit = 0
low = 0
lonst = str(input())
for i in lonst:
    if i.isdigit():
        digit = digit + 1
    elif 'a' <= i <= 'z':
        low = low + 1


print("共有{}个数字,{}个小写字符".format(digit,low))

7-23 输入字符串,排序后输出最大字符及该字符在原字符串中的索引 (30 分)

输入字符串,排序后输出最大字符及该字符在原字符串中的索引。相同字符的索引取最大值。提示:用元组实现。

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

输出格式:
在一行输出字符和索引。

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

Hello Python
输出样例:
在这里给出相应的输出。字符和数字间空3格。例如:

y 7

tuplon = tuple(input())
n = 0
ement = tuplon[0]#原先想着小写大,只考虑字母,写成了ement = 'A',错的
for index,user in enumerate(tuplon):
    if ement <= user:#相同索引取最大值
        ement = user
        n = index


print("{}   {}".format(ement,n))

7-24 统计字符在字符串中第n次出现的位置 (30 分)

输入一个字符串s,一个数字n和一个字符c,统计这个字符c在字符串s中第n次出现的位置

输入格式:
输入3行。第1行是字符串s,第2行是数字n,第3行是被查找的字符c。

输出格式:
第n个字符在字符串中的位置值。如果字符串中不存在第n个字符c,打印出’no’

输入样例:
abcabcabc
2
a
输出样例:
4

index = 0
begin = 0
lonst = str(input())
num = int(input())
ement = str(input())
for i in range(len(lonst)):
    if lonst[i] == ement:
        begin = begin + 1
        if begin == num:
            print(i+1)
if begin < num:
    print("no")

7-25 最长数字子串 (10 分)

本题目要求读入任意字符串,输出字符串的最长数字子串。若无数字字符,则输出“No digits”;若有多个最长数字子串,则输出第一个。

输入格式:
输入任意字符串。

输出格式:
输出字符串的最长数字子串。若无数字字符,则输出“No digits”;若有多个最长数字子串,则输出第一个。

输入样例:
12345
输出样例:
12345
输入样例:
abc12de33445fg6
输出样例:
33445
输入样例:
abcde
输出样例:
No digits

s = input()
Len_num = []#用于记录整个字符串中的各个数字串长度
S = [] # 用于记录整个字符串中各个数字串
cur_len = 0# 用于记录当前数字串长度
cur_num =""#用于记录当前数字字符
for i in range(len(s)-1,-1,-1):#倒
    temp = ord(s[i]) # 求ASCII
    if temp in range(48, 58): # 0-9
        cur_len += 1 #当前数字串长度 + 1
        cur_num += s[i] # 当前数字串增加一个数字
    elif temp not in range(48,58) and cur_len != 0:#下一个字符不是数字Len_num. append(cur_len)
        Len_num.append(cur_len)
        S.append(cur_num)
        cur_len = 0 # 初始化
        cur_num = "" # 初始化
if cur_len != 0: #以数字字符串结尾
    Len_num.append(cur_len)
    S.append(cur_num)
if len(Len_num) == 0: # 没有数字,输出空字符串
    print("No digits")
else:
    max_x = max(Len_num)
    max_index = Len_num.index(max_x)
    print(S[max_index][::-1])#reverse Xin40122035
    

7-26 身份证号判断性别与出生日期 (15 分)

在这里插入图片描述
在这里插入图片描述

str =input()
l = len(str)

def xingbie(str):
    if l == 15:
        str = int(str[-1])
    if l == 18:
        str = int(str[-2])
    if str in [1,3,5,7,9]:
        sex = '男'
    else:
        sex = '女'
    return sex

def riqi(n,y,r):
    month = [0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    if(y<=0 or y>12 or r<=0 or r>31):
        return 0
    elif(n%4 == 0 and n%100 != 0 or n%400==0):
        month[2] += 1
    return r <= month[y]

def tiqu(str,l):
    global tem,n,y,r
    if l == 15:
        str = str[6:12]
        n = "19"+str[0:2]
        y = str[2:4]
        r = str[4:6]
        tem = "{0}年{1}月{2}日".format(n, y, r)
        n = int(n);y = int(y);r = int(r)
    if l == 18:
        str = str[6:14]
        n = str[0:4]
        y = str[4:6]
        r = str[6:8]
        tem = "{0}年{1}月{2}日".format(n, y, r)
        n = int(n);y = int(y);r = int(r)


def shenefen(str,l):
        tiqu(str, l)
        if riqi(n,y,r):
            print(xingbie(str),tem,sep=',')
        else:
            print("Error,日期不合法")

shenefen(str,l)
#又改了

7-27 求解字符串数字组合 (15 分)

Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数,其中combinations, permutations是用求解组合和排列的函数。 请输入一个有由数字大小写字母组成的字符串 与 一个整数 n,去掉字符串中大小字母仅保留数字的字符串,输出去重后数字符串的n位全组合。

输入格式:
例如:

第一行输入至少含一个数字字符的一串字符串,例如:ABC12DE3De125DE4(去重后数字字符串:12354);

第二行输入一整数n:( 保证n小于等于 去重后数字字符串的长度)。

输出格式:
去重后数字字符串按从大到小的全组合。每种组合占一行,字符间无空格。排列的输出顺序为字典顺序。

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

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

543
542
541
532
531
521
432
431
421
321

from itertools import combinations
a=input()
b=[]
e=[]
c=set()
d=""
t=0
for i in a:
    if i.isdigit():
        b.append(eval(i))
for i in b:
    c.add(i)
n=eval(input())
if n<=len(c):
   for i in combinations(c,n):
        i=list(i)
        i.sort(reverse=True)
        while t<len(i):
           d+=str(i[t])
           t+=1
        e.append(eval(d))
        t=0
        d=""
e.sort(reverse=True)
for i in e:
    print(i)
'''

    '''

7-28 利用正则表达式得到一段HTML文本中所有超链接对应的网址 (20 分)

编写程序实现以下功能:利用正则表达式得到一段HTML文本中所有超链接对应的网址,并将网址输出到屏幕上(每行输出一个网址)。

输入格式:
从键盘输入 一段HTML文本,多行输入,空行输入 结束。

输出格式:
输出从HTML文本中提取到的超链接所对应的网址,一行一个网址。

输入样例:
在这里给出一组输入。例如:
在这里插入图片描述

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

https://baijiahao.baidu.com/s?id=1633289774665320636&wfr=spider&for=pc
https://baijiahao.baidu.com/s?id=1632116753423885280&wfr=spider&for=pc

import  re
import sys
try:
    mx = []
    while True:
        m = sys.stdin.readline().strip()
        if m == '':
            break
        m = list(m.split())
        mx.append(m)
except:
    pass


def get_links(html):
    webpage_regex = re.compile('<a[^>]+href=["\'](.*?)["\']', re.IGNORECASE)
    lonst = []
    lonst = webpage_regex.findall(html)
    for i in lonst:
        print(i)

get_links(str(mx))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值