python递归函数,统计一个指定字符在一个字符串的次数,函数头用:intcount(char,char))
时间: 2023-06-08 12:07:28 浏览: 77
这是一个简单的 Python 递归函数,可以用于统计一个指定字符在一个字符串中出现的次数:
```python
def count(c, s):
if len(s) == 0:
return 0
if s[0] == c:
return 1 + count(c, s[1:])
else:
return count(c, s[1:])
```
函数中的两个参数分别表示要搜索的字符和要搜索的字符串。首先判断字符串是否为空,如果为空就返回 0。然后,如果字符串的第一个字符是我们要搜索的字符,就返回 1 并继续搜索剩余的字符串;如果不是,就直接搜索剩余的字符串。这样递归调用函数,直到找到所有出现的位置并统计出现的次数为止。
请注意,这个函数是区分大小写的,如果想要忽略大小写,可以将 if 语句改为 s[0].lower() == c.lower()。
相关问题
python(1)用递归函数求斐波那契数列。 (2)设计递归函数实现字符串逆序。 (3)从键盘上输入一个列表,编写一个函数计算列表元素的平均值。 (4)请定义函数count(str,c),检查字符串str中单个字符c出现的次数,返回这个次数。
(1)在Python中,可以使用递归函数来求斐波那契数列。这是一个典型的递归示例:
```python
def fibonacci(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# 示例:打印前10项斐波那契数列
for i in range(10):
print(fibonacci(i))
```
(2)对于字符串逆序,你可以这样设计递归函数:
```python
def reverse_string(s, index=0):
if index < len(s) - 1:
return reverse_string(s, index+1) + s[index]
else:
return s[index]
# 示例:打印 "hello" 的逆序字符串
print(reverse_string("hello"))
```
(3)计算列表元素平均值的函数可以这样做:
```python
def average(lst):
if not lst: # 如果列表为空,返回0
return 0
else:
return sum(lst) / len(lst)
# 示例:输入列表并计算平均值
numbers = [int(x) for x in input("请输入一个整数列表,用逗号分隔: ").split(",")]
average_value = average(numbers)
print(f"平均值是: {average_value}")
```
(4)检查字符串中单个字符出现次数的函数定义如下:
```python
def count_chars(s, char):
return s.count(char)
# 示例:统计字符串 "hello world" 中 'l' 出现的次数
input_str = "hello world"
char_count = count_chars(input_str, 'l')
print(f"字符 '{char}' 出现了 {char_count} 次")
```
1给一个五位数的整数,编写一个函数,实现逆序输出,例如45876,输出67854。要求写出四种基本形式函数,并调用。2编写一个函数对所接收字符串中大小写字母个数进行统计,并将统计结果按先大写后小写字母的个数,采用元组的形式进行返回
1. 要实现一个逆序输出整数的函数,你可以考虑四种不同的函数形式:
- 函数一 (递归法):
```python
def reverse_num_recursion(n):
if n < 10:
return n
else:
return reverse_num_recursion(int(str(n % 10))) * 10 + (n // 10)
```
- 函数二 (迭代法):
```python
def reverse_num_iterative(n):
reversed_str = ''
while n > 0:
reversed_str += str(n % 10)
n //= 10
return int(reversed_str)
```
- 函数三 (列表推导式):
```python
def reverse_num_list_comprehension(n):
return int(''.join([str(digit) for digit in str(n)[::-1]]))
```
- 函数四 (内置函数结合):
```python
def reverse_num_reverse(n):
return int(str(n)[::-1])
```
调用示例:
```python
print(reverse_num_recursion(45876)) # 输出 67854
print(reverse_num_iterative(45876))
print(reverse_num_list_comprehension(45876))
print(reverse_num_reverse(45876))
```
2. 对于统计字符串中大小写字母个数的函数,可以这样实现:
```python
def count_letters(s):
uppercase_count = sum(1 for char in s if char.isupper())
lowercase_count = sum(1 for char in s if char.islower())
return (uppercase_count, lowercase_count)
input_string = "Hello World!"
result = count_letters(input_string)
print(result) # 输出:(2, 9), 元组形式表示大写两个,小写九个
```
阅读全文