编写一个函数,计算字符串中含有的不同字符的个数。 字符ASCII码范围内(0~127 ,包括0和127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次 例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3 。 数据范围:1≤n≤500 输入描述:输入一行没有空格的字符串。 输出描述:输出输入字符串中范围在(0~127,包括0和127)字符的种数。
时间: 2024-02-24 08:54:53 浏览: 111
可以编写一个函数来实现计算字符串中不同字符的个数。函数的输入为一个字符串,输出为不同字符的个数。
以下是一个 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()` 函数将字符转换为对应的整数。
编写自定义函数total,统计一个字符串中字母、数字和其他字符的个数。
可以使用Python内置的字符串方法isalpha()、isdigit()来判断字符是否为字母或数字,也可以使用ASCII码进行判断。
以下是一个示例代码实现:
```python
def total(s):
letters = 0
digits = 0
others = 0
for char in s:
if char.isalpha():
letters += 1
elif char.isdigit():
digits += 1
else:
others += 1
return letters, digits, others
```
使用示例:
```python
s = "Hello, 123! #@%"
letters, digits, others = total(s)
print("Letters:", letters)
print("Digits:", digits)
print("Others:", others)
```
输出:
```
Letters: 7
Digits: 3
Others: 6
```