繁体   English   中英

如何用 for 循环计算字符串中的字符

[英]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()分别时,您应该递增numbersletters 而且您应该打印出numbersletters而不是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM