编写一个函数,计算字符串中含有的不同字符的个数。 字符ASCII码范围内(0~127 ,包括0和127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次 例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3 。 数据范围:1≤n≤500 输入描述:输入一行没有空格的字符串。 输出描述:输出输入字符串中范围在(0~127,包括0和127)字符的种数。
时间: 2024-02-24 19:54:53 浏览: 158
可以编写一个函数来实现计算字符串中不同字符的个数。函数的输入为一个字符串,输出为不同字符的个数。
以下是一个 Python 代码示例:
```python
def count_distinct_chars(s):
appeared = [0] * 128 # 初始化数组
count = 0 # 统计不同字符个数
for c in s:
if ord(c) < 128 and ord(c) >= 0 and appeared[ord(c)] == 0:
# 如果字符的ASCII码在0~127范围内,并且之前没有出现过
appeared[ord(c)] = 1 # 标记为出现过
count += 1 # 不同字符个数加1
return count
```
可以将这个函数封装到一个模块中,在需要计算不同字符个数的时候直接调用该函数即可。例如:
```python
import distinct_chars_count
s = input().strip() # 输入字符串,去掉首尾空格
count = distinct_chars_count.count_distinct_chars(s)
print(count)
```
需要注意的是,这里的 `input()` 函数会读取一行用户输入并返回一个字符串,函数中的 `strip()` 方法会去掉字符串首尾的空格。应该在调用函数之前对输入字符串进行预处理。
相关问题
帮写一个程序:计算字符串中含有的不同字符的个数。 字符ASCII码范围内(0~127 ,包括0和127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次 例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3 。 数据范围:1≤n≤500 输入描述:输入一行没有空格的字符串。 输出描述:输出输入字符串中范围在(0~127,包括0和127)字符的种数。
可以使用一个长度为128的数组来记录每个字符是否出现过,出现过就标记为1。最后统计数组中1的个数即可。
以下是一个简单的 Python 代码示例:
```python
s = input().strip() # 输入字符串,去掉首尾空格
appeared = [0] * 128 # 初始化数组
count = 0 # 统计不同字符个数
for c in s:
if ord(c) < 128 and ord(c) >= 0 and appeared[ord(c)] == 0:
# 如果字符的ASCII码在0~127范围内,并且之前没有出现过
appeared[ord(c)] = 1 # 标记为出现过
count += 1 # 不同字符个数加1
print(count)
```
需要注意的是,Python 中的字符串默认就是 Unicode 编码,每个字符都可以表示成一个整数,因此可以直接使用 `ord()` 函数将字符转换为对应的整数。
编写函数求给定字符串中数字字符的个数在主函数中输入字符串及输出统计的个数
以下是 Python 的示例代码:
```python
def count_digits(s):
count = 0
for c in s:
if c.isdigit():
count += 1
return count
# 示例用法
s = input("请输入一个字符串:")
count = count_digits(s)
print("字符串中数字字符的个数为:", count)
```
解释一下代码:
- `count_digits` 函数接受一个字符串参数 `s`,用 `count` 变量来记录其中数字字符的数量。
- 使用 `for` 循环遍历字符串中的每个字符,对于每个字符,使用 `isdigit()` 方法来判断是否是数字字符,如果是,则将计数器 `count` 加 1。
- 循环结束后,返回数字字符的数量。
- 在主函数中,首先让用户输入一个字符串,然后调用 `count_digits` 函数来统计其中数字字符的数量,并输出结果。
注意,这里的示例代码假设输入的字符串只包含 ASCII 编码下的数字字符。如果要处理 Unicode 编码下的数字字符,需要使用 `isnumeric()` 方法来判断。
阅读全文