因此,我正在尝试创建一个程序来计算用户输入的字符串中的字符数,但我想丢弃用户输入的任何空格。
def main():
full_name = str(input("Please enter in a full name: ")).split(" ")
for x in full_name:
print(len(x))
main()
使用这个,我可以得到每个单词中的字符数,没有空格,但我不知道如何将每个数字相加并打印总数。
因此,我正在尝试创建一个程序来计算用户输入的字符串中的字符数,但我想丢弃用户输入的任何空格。
def main():
full_name = str(input("Please enter in a full name: ")).split(" ")
for x in full_name:
print(len(x))
main()
使用这个,我可以得到每个单词中的字符数,没有空格,但我不知道如何将每个数字相加并打印总数。
计算长度并减去空格数:
>>> 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)
sum
与生成器表达式一起使用:
>>> text = 'foo bar spam'
>>> sum(len(x) for x in text.split())
10
或str.translate
与len
:
>>> from string import whitespace
>>> len(text.translate(None, whitespace)) #Handles all types of whitespace characters
10
为什么你不能这样做:
>>> mystr = input("Please enter in a full name: ")
Please enter in a full name: iCodez wrote this
>>> len(mystr.replace(" ", ""))
15
>>> len(mystr)
17
>>>
这得到字符串的长度减去空格。
我可以提出几个版本。
您可以用空字符串替换每个空格并计算长度:
len(mystr.replace(" ", ""))
您可以计算整个字符串的长度并减去空格数:
len(mystr) - mystr.count(' ')
或者,您可以在用空格分割字符串后对所有子字符串的长度求和:
sum(map(len, mystr.split(' ')))
要计算不包括空格的字符数,您可以简单地执行以下操作:
>>> full_name = "John DOE"
>>> len(full_name) - full_name.count(' ')
7
一些代码尽可能接近您的原始代码:
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(' ')
更好。
你也可以做
sum(1 for c in s if c!=' ')
这避免了任何不必要的临时字符串或列表。
在评论中解释
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]