我正在编写一个代码,要求用户输入一个字符串,然后输入一个字符,它会计算字符串中有多少个字符。由于某种原因,我的角色与输入的角色不同。
value = input("Input a string: ")
char = str(input("Input a character to count: "))
count = 0
for char in value:
count += 1
print(f"The character '{char}' appears {count} times.")
您的循环已将
char
绑定到与原始输入不同的值。该名称对于循环来说不是“本地”的。我们可以通过一个简单的测试来看到这一点。
>>> a = [1,2,3]
>>> for a in a: pass
...
>>> a
3
简单的解决方案:更改名称。
您也没有测试每个角色是否是您正在寻找的角色。
您也不需要将
input
的结果转换为字符串。已经是了。
value = input("Input a string: ")
char = input("Input a character to count: ")
count = 0
for ch in value:
if ch == char:
count += 1
print(f"The character '{char}' appears {count} times.")
您正在覆盖每次循环迭代的 char 值。此代码将按您的预期运行:
value = input("Input a string: ")
char = input("Input a character to count: ")[0]
count = 0
for c in value:
if c == char:
count += 1
print(f"The character '{char}' appears {count} times.")