【问题标题】:How can you count the characters in a string with for loop如何用for循环计算字符串中的字符
【发布时间】:2021-06-26 13:07:22
【问题描述】:

我想创建一个小代码来计算字符串中的数字和字母。我在某处有一个错误,因为代码只返回字符串的最后一个字符。这是我运行代码时得到的:

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])

提前感谢您的帮助。

【问题讨论】:

  • 看来您应该在ifelif 中增加您的计数,而不仅仅是passing,不是吗?

标签: python string loops for-loop character


【解决方案1】:

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)

【讨论】:

    【解决方案2】:

    您的代码并没有真正计算字符串中字母和数字的数量。

    注意 for 循环中的前两个条件。

    if x.isnumeric():
        pass
    elif x.isalpha():
        pass
    

    如果字符(即 x)是数字或字母,它只是跳过或通过,什么都不做。

    此外,除非有符号,否则不会执行else。 因此 lettersnumbers 变量的值在 for 循环结束后将为 0。

    另一个问题,您使用的变量 x 代表字符串的最后一个字符(因为最后一次迭代)。然后,您使用 lettersnumbers 变量作为索引,即 0。这就是为什么它输出最后一个字符。

    x[字母] --> x[0] --> 1

    print("Letters: " + x[letters])
    print("Numbers: " + x[numbers])
    

    解决问题

    • numbersletters 变量加 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))
      

    【讨论】:

      【解决方案3】:
      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}")
      

      【讨论】:

        【解决方案4】:

        您好,我已对您的代码进行了处理并进行了更正。 你可以试试下面的代码吗?

        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 ))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-10
          • 2022-01-03
          • 1970-01-01
          • 2015-12-27
          • 1970-01-01
          • 2020-01-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多