Python:计算字符串中有多少个字母

Python:计算字符串中有多少个字母,python,passwords,letters,Python,Passwords,Letters,我正在尝试编写一个基本的密码检查程序,每当用户尝试两次输入正确的密码时,我都应该打印一个提示,告诉用户密码中有多少个字母。 Password是我存储正确字符串的变量 elif attempts == 1: letters = 0 for i in password: if password[i].isaplha(): letters = letters + 1 print('There ar

我正在尝试编写一个基本的密码检查程序,每当用户尝试两次输入正确的密码时,我都应该打印一个提示,告诉用户密码中有多少个字母。 Password是我存储正确字符串的变量

elif attempts == 1:
        letters = 0 
        for i in password:
            if password[i].isaplha():
                letters = letters + 1
        print('There are',letters,'letters in your password')
我的代码给出了错误

TypeErrorTraceback (most recent call last)
<ipython-input-195-c967c81bda5f> in <module>()
       letters = 0
       for i in password:
---->      if password[i].isaplha():
               letters = letters + 1
TypeError: string indices must be integers
TypeErrorTraceback(最近一次调用上次)
在()
字母=0
对于输入密码的i:
---->如果密码[i].isaplha():
字母=字母+1
TypeError:字符串索引必须是整数
我做错了什么?这里有两个问题

  • for i in password
    正在迭代
    password
    中的实际字符,而不是它们的索引,因此您应该检查
    i.isalpha()
  • 字符串方法不是
    isaplha
    ,而是
    isalpha
在保持当前方法的同时修复这些问题

... 
elif attempts == 1:
    letters = 0 
    for i in password:
        if i.isalpha():
            letters = letters + 1
    print('There are',letters,'letters in your password')
如果你想做得更简洁一点,你可以根据每个字符
isalpha
与否,使用Python中
True
1
这一事实,对布尔值进行
sum
生成

... 
elif attempts == 1:
    letters = sum(i.isalpha() for i in password)
    print('There are {0} letters in your password'.format(letters))
这里有两个问题

  • for i in password
    正在迭代
    password
    中的实际字符,而不是它们的索引,因此您应该检查
    i.isalpha()
  • 字符串方法不是
    isaplha
    ,而是
    isalpha
在保持当前方法的同时修复这些问题

... 
elif attempts == 1:
    letters = 0 
    for i in password:
        if i.isalpha():
            letters = letters + 1
    print('There are',letters,'letters in your password')
如果你想做得更简洁一点,你可以根据每个字符
isalpha
与否,使用Python中
True
1
这一事实,对布尔值进行
sum
生成

... 
elif attempts == 1:
    letters = sum(i.isalpha() for i in password)
    print('There are {0} letters in your password'.format(letters))
IsAplha()方法返回true如果字符串中只有字母字符,它不会告诉字符串的长度,可以这样做 print('youhave',len(password),'letters in password')

IsAplha()方法返回true如果字符串中只有字母字符,它不会告诉字符串的长度,您可以这样做
打印('youhave',len(password),'lettersinpassword')

您也可以使用正则表达式来实现这一点

import re
password = 'hE1Ar'
lett_count = len(re.findall('[A-z]', password))
更新/更正:

lett_count = len(re.findall('[A-Za-z]', password))

您也可以使用regex来实现这一点

import re
password = 'hE1Ar'
lett_count = len(re.findall('[A-z]', password))
更新/更正:

lett_count = len(re.findall('[A-Za-z]', password))

你为什么认为它有问题?给出一个我们可以用输入、预期和实际输出进行测试的例子。可能的重复为什么你认为它有问题?给出一个我们可以实际测试的输入和预期的实际输出。Try
password='you\u fail'
可能重复。Try
password='you\u fail'
。OP不需要字符串的长度,而是要字符串中的字母数。OP不需要字符串的长度,而是要字符串中的字母数。