簡體   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