计算一串数字中的数字

时间:2017-10-05 01:01:31

标签: python python-3.x

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循环中,但我不知道如何在范围内进行。

3 个答案:

答案 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中提供的数字匹配,它将返回包含Falseb元素的列表:[False, True, True, False, False, False]
  • sum()计算列表中非假名值的数量,在本例中为2