Python 如何检查字符串的索引是否在多个范围内?
我想创建一个函数来计算多个范围内字符串中的字符数。假设有效字符为:Python 如何检查字符串的索引是否在多个范围内?,python,Python,我想创建一个函数来计算多个范围内字符串中的字符数。假设有效字符为: 介于'a'和'f' 介于'1'和'3' 逗号,' 如果调用函数NumInRange,这就是我对代码的期望。字符a、1、d、、和b在范围内,因此返回5: NumInRange(“a14d8,b”) 5. 我的代码如下所示: def NumInRange(s): for i in range(len(s)): count=0 if (ord('a')<=ord(s[i])<=
- 介于
和'a'
'f'
- 介于
和'1'
'3'
- 逗号
,'
NumInRange
,这就是我对代码的期望。字符a
、1
、d
、、
和b
在范围内,因此返回5
:
NumInRange(“a14d8,b”)
5.
我的代码如下所示:
def NumInRange(s):
for i in range(len(s)):
count=0
if (ord('a')<=ord(s[i])<=ord('e') or 1<=int(s[i])<=3 or ord(s[i])==ord(',')):
count=count+1
return count
- 无需转换为
或int
,直接比较字符串ord
- 您在循环中使用
实例化了0
,因此即使代码有效,您也始终会得到count
或0
1
c
只能是一个字符(假定s
是一个字符串),因此您可以简单地执行(以“硬编码”范围的“成本”为代价)
另一种完全不同的方法是正则表达式:
import re
def NumInRange(s):
return len(re.findall('[a-e1-3,]', s))
int函数只允许您输入数字。当您遍历字符串时,它会抛出一个错误,因为它会向int函数提供一个字符。如果允许您使用正则表达式,您可以使用re.findall,
import-re-print(len(re.findall(“[a-Fa-f1-3,]”,您的字符串))
def NumInRange(s):
return sum('a' <= c <= 'e' or '1' <= c <= '3' or c == ',' for c in s)
def NumInRange(s):
return sum(c in 'abcde123,' for c in s)
import re
def NumInRange(s):
return len(re.findall('[a-e1-3,]', s))