a = input('Enter a number: ')
b = input('Enter a digit between 0 and 9: ')
p = int(0)
t = int(0)
while p <=len(a):
if a[p] == b:
t += 1
p += 1
else:
p +=1
print ('The number', b, 'appears', t, 'times')
我需要计算一个数字出现在数字中的次数。这段代码告诉我字符串索引超出范围,我理解这意味着它不在while循环中,但我不知道如何在范围内进行。
答案 0 :(得分:0)
首先,你的缩进有点破碎。希望这只是一个复制/粘贴问题。
“超出范围”问题来自您的while
条件。请尝试使用while p < len(a)
代替while p <=len(a)
。
答案 1 :(得分:0)
你的缩进有点过了。如果我在while
循环内修改缩进并将<=
更改为<
(n
个数组从0
变为n - 1
),你的程序变成了这个:
a = input('Enter a number: ')
b = input('Enter a digit between 0 and 9: ')
p = int(0)
t = int(0)
while p < len(a):
if a[p] == b:
t += 1
p += 1
else:
p +=1
print ('The number', b, 'appears', t, 'times')
并完成您想要的行为。
关于代码的说明:你正在编写Python,而不是汇编。您可以使用for
循环更简洁地计算字符串中的出现次数:
a = input('Enter a number: ')
b = input('Enter a digit between 0 and 9: ')
t = 0
for d in a:
if d == b:
t += 1
print ('The number', b, 'appears', t, 'times')
答案 2 :(得分:0)
我会这样解决这个问题:
a = input('Enter a number: ')
b = input('Enter a digit between 0 and 9: ')
count = sum([digit == b for digit in a])
print('The number', b, 'appears', count, 'times')
解开正在发生的事情:
我们说a = '155628'
和b = '5'
[digit == b for digit in a]
是一个列表推导,它将遍历数字a
中的每个数字(字符串)。如果该数字与True
中提供的数字匹配,它将返回包含False
和b
元素的列表:[False, True, True, False, False, False]
sum()
计算列表中非假名值的数量,在本例中为2