Python字符串题目集

1.找最长的字符串

本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。

输入格式:

输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

输出格式:

在一行中用以下格式输出最长的字符串:

The longest is: 最长的字符串

如果字符串的长度相同,则输出先输入的字符串。

输入样例:

5
li
wang
zhang
jin
xiang

输出样例:

The longest is: zhang

代码:

n=int(input())
l=[]
for _ in range(n):
    s=input()
    l.append(s)
m=max(l,key=len)
print(f"The longest is: {m}")

2.输出一个字符串的字符的16-10-8-2进制数

输入一行字符串,去掉非16进制字符,将它转换成16、10、8、2进制数,输出。

输入格式:

输入一行字符串。

输出格式:

输出转换后的16、10、8、2进制数。数据之间有1个空格。(16进制字母小写)

输入样例:

_ahg1*B

输出样例:

a1b 2587 5033 101000011011

代码:

s=input().lower()
s1=""
for i in s:
    if i in "0123456789abcdef":
        s1+=i
a=int(s1,16)#10
b=oct(a)[2:]#8
c=bin(a)[2:]#2
print(s1,a,b,c)

3.置换加密算法

将消息分成两组字符,其中第一组字符由偶数位置的字符组成,第二组字符由奇数位置的字符组成。用偶数位置的字符创建一个字符串,用奇数位置的字符创建另一个字符串,然后将奇数字符串和偶数字符串这两个新字符串拼接在一起形成密文字符串。这种加密方法称为置换加密算法。

输入格式:

输入一组字符串消息

输出格式:

输出使用置换加密算法后的加密消息

输入样例1:

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

abababab

输出样例1:

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

bbbbaaaa

代码:

s=input()
s1,s2='',''
for i in s[0::2]:
    s1=s1+i
for i in s[1::2]:
    s2=s2+i
print(s2+s1)

4.整数的二进制相加

输入两个整数,大小在[0,63]之间。求它们的和,对二进制形式展示数据。

二进制用8位表示。

输入格式:

在一行输入一个十进制整数,在第二行输入另一个十进制整数。

输出格式:

求它们和,并输出数据的二进制形式。

输入样例:

5
7

输出样例:

00000101
00000111
--------
00001100

代码:

n1=int(input())
n2=int(input())
n3=n1+n2
n1=bin(n1)[2:]
n2=bin(n2)[2:]
n3=bin(n3)[2:]
print(n1.zfill(8))
print(n2.zfill(8))
print("--------")
print(n3.zfill(8))

5.密码是否符合要求

小明正在注册邮箱,设置密码时,提示:组成密码的字符中必须包含大写字母和数字字符,且密码长度必须是8-16个字符。

请编写一段代码,帮小明判断他输入的字符串是否符合上述要求,若符合,则输出YES,不符合,输出NO。

输入格式:

输入不大于16个字符长度的非空字符串

输出格式:

符合要求,输出YES,否则,输出NO

输入样例:

XIAOMING

输出样例:

NO

输入样例:

XIAOMING2021

输出样例:

YES

代码:

s=input()
if len(s)>16 or len(s)<8:
    print("no")
else:
    u,d=0,0
    for i in s:
        u+=i.isupper()
        d+=i.isdigit()
    if u==0 or d==0:
        print("NO")
    else:
        print("YES")

6.python-字符串:对一个字符串内整数数值求和

输入一个字符串,求出字符串内包含的整数数值的和。

输入格式:

在一行内输入一个字符串。

输出格式:

对输入的字符串,输出包含的正整数数值的和,如果不包含整数数值,输出0。

输入样例:

a120,x;y01.2

输出样例:

123

代码:

s=input()
n,c=0,0
for i in s+" ":
    if i.isdigit():
        n=n*10+int(i)
    else:
        c=c+n
        n=0
print(c)

7.字符串转换成十进制整数

输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

输入格式:

输入在一行中给出一个以#结束的非空字符串。

输出格式:

在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

输入样例:

+-P-xf4+-1!#

输出样例:

-3905

代码:

s=input().lower()
s1=""
for i in s:
    if i=='-' and len(s1)==0:
        s1+=i
    if '0'<=i<='9' or 'a'<=i<='f':
        s1+=i
try:
    print(int(s1,16))
except:
    print(0)

8.字符串字母大小写转换

本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。

输入格式:

输入为一个以“#”结束的字符串(不超过30个字符)。

输出格式:

在一行中输出大小写转换后的结果字符串。

输入样例:

Hello World! 123#

输出样例:

hELLO wORLD! 123

代码:

n=input()
n=n.swapcase()
print(n.replace("#",""))

9.输出字符串中最大字符及其索引位置

输入字符串,排序后输出最大字符及该字符在原字符串中的索引。

相同字符的索引取最大值。

输入格式:

一行输入字符串。

输出格式:

在一行内输出最大字符及其最大索引位置。字符和数字间有3个空格。

输入样例1:

Hello Python

输出样例1:

y   7

代码:

s=input()
print(f"{max(s)}   {s.rfind(max(s))}")

10.规范化字符串长度

输入一个字符串,输入一个规范化长度数值,对字符串进行规范化。如果字符串长度大于规范长度,则按照规范长度进行截断,如果小于规范长度,则按照规范长度在后面进行填充,填充字符为$.

输入格式:

abc
8

输出格式:

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

输入样例:

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

abc
8

输出样例:

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

abc$$$$$

代码:

s=input()
n=int(input())
s1=''
if len(s)<n:
    s1=s+'$'*(n-len(s))
    print(s1)
else:
    print(s[:8])

11.判断两个字符串是否为变位词

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

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

输入格式:

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

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

输出格式:

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

输入样例1:

Mary
arMy

输出样例1:

yes

输入样例2:

hello world
world hello

输出样例2:

yes

代码:

s1=input().lower()
s2=input().lower()
s1=sorted(s1)
s2=sorted(s2)
if s1==s2:
    print("yes")
else:
    print("no")

12.输出最大、最小字符串

输入5个字符串,分别按ASCII编码顺序、字符串长度输出最大、最小字符串。

输入格式:

输入五个字符串,之间用空格分开。

输出格式:

第一行,按ASCII编码顺序输出最大、最小字符串,空格分开。
第二行,按字符串长度输出最大、最小字符串,空格分开。

输入样例:

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

C C++ Python Java Fortran

输出样例:

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

Python C
Fortran C

代码:

s=input().split()
print(max(s),min(s))
print(max(s,key=len),min(s,key=len))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值