6

因此,我正在尝试创建一个程序来计算用户输入的字符串中的字符数,但我想丢弃用户输入的任何空格。

def main():
    full_name = str(input("Please enter in a full name: ")).split(" ")

    for x in full_name:
        print(len(x))


main()

使用这个,我可以得到每个单词中的字符数,没有空格,但我不知道如何将每个数字相加并打印总数。

4

8 回答 8

20

计算长度并减去空格数:

>>> full_name = input("Please enter in a full name: ")
Please enter in a full name: john smith
>>> len(full_name) - full_name.count(' ')
9
>>> len(full_name)
于 2013-10-29T21:02:32.790 回答
4

sum与生成器表达式一起使用:

>>> text = 'foo  bar  spam'
>>> sum(len(x) for x in text.split())
10

str.translatelen

>>> from string import whitespace
>>> len(text.translate(None, whitespace)) #Handles all types of whitespace characters
10
于 2013-10-29T21:01:02.027 回答
1

为什么你不能这样做:

>>> mystr = input("Please enter in a full name: ")
Please enter in a full name: iCodez wrote this
>>> len(mystr.replace(" ", ""))
15
>>> len(mystr)
17
>>>

这得到字符串的长度减去空格。

于 2013-10-29T21:01:48.473 回答
1

我可以提出几个版本。

您可以用空字符串替换每个空格并计算长度:

len(mystr.replace(" ", ""))

您可以计算整个字符串的长度并减去空格数:

len(mystr) - mystr.count(' ')

或者,您可以在用空格分割字符串后对所有子字符串的长度求和:

sum(map(len, mystr.split(' ')))
于 2013-10-29T21:03:28.210 回答
1

要计算不包括空格的字符数,您可以简单地执行以下操作:

>>> full_name = "John DOE"
>>> len(full_name) - full_name.count(' ')
7
于 2013-10-29T21:08:48.897 回答
0

一些代码尽可能接近您的原始代码:

def main():
    full_name = input("Please enter in a full name: ").split()
    total = 0
    for x in full_name:
        total += len(x)
    print(total)

不过,我觉得len(full_name) - full_name.count(' ')更好。

于 2013-10-29T21:08:45.050 回答
0

你也可以做

sum(1 for c in s if c!=' ') 

这避免了任何不必要的临时字符串或列表。

于 2013-10-29T21:13:58.807 回答
0

在评论中解释

string1 = input ()

# just when the condition is true add 1 
res = sum(1 for c in string1 if c!=' ')

# it's shorter and still works
res2 = sum(c!=' ' for c in string1)

# summing ones may be more explicit but it's unnecessary
print(res, res2) 
c v s
3 3

[Program finished]
于 2021-03-07T10:10:58.043 回答