从String中取出没有列表的数字

时间:2018-03-31 17:00:37

标签: python string numbers letters

我必须使用Python语言创建一个(def)程序,其中用户插入一个字符串(最多8位数字(0-9)和字母(az)),程序必须找出有多少数字一个字符串。程序将计算这些数字的总和和平均值。

2 个答案:

答案 0 :(得分:1)

方法1 :按字符串纯实现,完全不使用列表。

def sum_and_average(string):
    COUNT = 0
    SUM   = 0
    for value in string:
        if value.isdigit():
            SUM += int(value)
            COUNT +=1
    print('Sum :',SUM)
    print('Average :',SUM/COUNT)

方法2 :使用列表推导和Ascii值

def sum_and_average2(s):
    L = [int(var) for var in s if 48<=ord(var)<=57]
    print('Sum :', sum(L))
    print('Average :', sum(L)/len(L))

方法3 :使用正则表达式,已经提到但是Regex也会将值存储为列表对象,因此在您的情况下,方法1将是最好的,但方法3将是最快的长字符串输入的情况。

答案 1 :(得分:0)

您可以使用正则表达式解析弹簧以分别获取数字和字母,然后对数字执行所需的操作。 实施例

import re
def spring_program(spring):
    regex = re.compile("([0-9]+)([a-z]+)")
    numbers = regex.match(spring).group(1)
    letters = regex.match(spring).group(2)
    print(numbers)
    print(letters)
    #you can now do any manipulation to the numbers