[英]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.