Python:计算字符串中有多少个字母
我正在尝试编写一个基本的密码检查程序,每当用户尝试两次输入正确的密码时,我都应该打印一个提示,告诉用户密码中有多少个字母。 Password是我存储正确字符串的变量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
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'
可能重复。Trypassword='you\u fail'
。OP不需要字符串的长度,而是要字符串中的字母数。OP不需要字符串的长度,而是要字符串中的字母数。