Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查字符串的索引是否在多个范围内?_Python - Fatal编程技术网

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))