[英]How can you count the characters in a string with for loop
我想创建一个小代码来计算字符串中的数字和字母。 我在某处有一个错误,因为代码只返回字符串的最后一个字符。 这是我运行代码时得到的:
Enter something world1
Letters: 1
Numbers: 1
例如,我想要的答案是字母:5,数字:1。
这是我的代码
string = input("Enter something ")
numbers=0
letters=0
for x in string:
if x.isnumeric():
pass
elif x.isalpha():
pass
else:
letters = letters + 1
print("Letters: " + x[letters])
print("Numbers: " + x[numbers])
提前感谢您的帮助。
您的代码并没有真正计算字符串中字母和数字的数量。
注意 for 循环中的前两个条件。
if x.isnumeric():
pass
elif x.isalpha():
pass
如果字符(即 x)是数字或字母,它只是跳过或通过,什么也不做。
此外,除非有符号,否则不会执行 else 。 因此,字母和数字变量的值将在 for 循环结束后为 0。
另一个问题,您使用的变量 x 代表字符串的最后一个字符(因为最后一次迭代)。 然后,您使用字母和数字变量作为索引,即 0。这就是为什么它输出最后一个字符。
x[字母] --> x[0] --> 1
print("Letters: " + x[letters])
print("Numbers: " + x[numbers])
解决
将数字和字母变量增加 1,而不是使用 pass 关键字。
使用变量(数字和字母)本身,无需将 x 与索引一起使用。
string = input("Enter something ") numbers=0 letters=0 for x in string: if x.isnumeric(): numbers += 1 elif x.isalpha(): letters += 1 print("Letters: " + str(letters)) print("Numbers: " + str(numbers))
当x.isnumeric()
或x.isalpha()
分别时,您应该递增numbers
或letters
。 而且您应该打印出numbers
和letters
而不是x[letters]
,这很可能会引发异常,因为x
是长度为 1 的字符串,并且letters
很可能大于 0。
string = input("Enter something ")
numbers = 0
letters = 0
for x in string:
if x.isnumeric():
numbers += 1
elif x.isalpha():
letters += 1
print('String:', string)
print("Letters:", letters)
print("Numbers:", numbers)
string = input("Enter something ")
numbers=0
letters=0
for x in string:
if x.isnumeric():
numbers = numbers + 1
elif x.isalpha():
letters = letters + 1
print(f"Letters: {letters}")
print(f"Numbers: {numbers}")
嗨,我已经处理了你的代码并更正了它。 你可以试试下面的代码。
string = input("Enter something ")
numbers=0
letters=0
for x in string:
if x.isnumeric():
pass
numbers=numbers+1
elif x.isalpha():
pass
letters=letters+1
else:
letters=letters+1
print("Letters: {0}".format(letters ))
print("Numbers: {0}".format(numbers ))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.