给出一个由字母,数字和特殊字符组成的字符串S。您需要编写一个程序将字符串分成三个不同的字符串S1,S2和S3,这样字符串S1将包含S中存在的所有字母,字符串S2将包含S中存在的所有数字,S3将包含所有特殊字符S中存在字符。字符串S1,S2和S3的字符顺序应与输入中出现的顺序相同。
输入: 输入的第一行包含一个整数T,它表示测试用例的数量。每个测试用例的第一行包含字母,数字和特殊字符的字符串S。 输出: 对于每个测试用例,第一行打印包含所有S字母的字符串S1。第二行打印包含所有数字的字符串S2。在第三行中,打印字符串S3,其中包含S中存在的所有特殊字符。
约束: 1 <= T <= 100 3 <=长度(S)<= 1000
示例: 输入: 2 geeks01for02geeks03 !!! **每天编码123456789 ## 输出: 极客 010203 !!! 每天编码 123456789 ** ## 我的代码:
enter code here
t=int(input())
a=[]
n=[]
st=[]
for _ in range(t):
s=list(input())
for i in s:
if i.isalpha():
a.append(i)
elif i.isdigit():
n.append(i)
elif not i.isalnum():
st.append(i)
for i in a:
print(i,end='')
print('')
for i in n:
print(i,end='')
print('')
for i in s:
print(i,end='')
print('')
我的代码将字母,数字而非特殊字符分开,任何人都可以告诉我python代码有什么问题
答案 0 :(得分:0)
def splitString(str):
alpha = ""
num = ""
special = ""
for i in range(len(str)):
if (str[i].isdigit()):
num = num+ str[i]
elif((str[i] >= 'A' and str[i] <= 'Z') or
(str[i] >= 'a' and str[i] <= 'z')):
alpha += str[i]
else:
special += str[i]
print(alpha)
print(num )
print(special)
t=int(input())
for i in range(t):
s = input()
splitString(s)
答案 1 :(得分:0)
在最后一个用于打印特殊字符的for循环中,您将其循环到错误的列表上。更改为
for i in st:
print(i)