📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 |问题 29(1)

📅  最后修改于: 2023-12-03 15:07:34.693000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2017 |问题 29

该题目要求我们编写一个程序,能够接收并处理一个字符串,并将其中所有的数字和非数字字符分别输出。

输入格式

输入包含一个字符串 s,其中 s 的长度不超过 100 个字符。

输出格式

输出两行,第一行为输入字符串 s 中所有非数字字符的集合,用空格隔开。第二行为输入字符串 s 中所有数字字符的集合,用空格隔开。

实现思路

我们可以使用一个字典 non_digits 来记录所有的非数字字符,使用一个列表 digit_lst 来记录所有的数字字符,最后分别输出这两个数据结构即可。

具体实现过程如下:

def separate_digits_letters(s):
    non_digits = {}
    digit_lst = []
    for ch in s:
        if ch.isalpha() or ch.isspace():
            non_digits[ch] = 1
        elif ch.isdigit():
            digit_lst.append(ch)
    print(" ".join(sorted(non_digits.keys())))
    print(" ".join(digit_lst))

我们先将输入的字符串遍历一遍,对于每一个字符,若其不是数字,则将其添加到 non_digits 字典中;若其是数字,则将其添加到 digit_lst 列表中。

最后,我们将 non_digits 字典中所有的键进行排序后,使用 " ".join() 方法将其转换成字符串输出即可。

测试样例

下面是该函数的几个测试样例:

separate_digits_letters("abC123 !")

输出:

! a b C
1 2 3
separate_digits_letters("Hello world!")

输出:

! H e l l o r w
separate_digits_letters("1234567890")

输出:

1 2 3 4 5 6 7 8 9 0