在 n 中找到 c 多少次

How many times is c found in n

n = int(input("Input n: "))
c = int(input("Input c: "))

def it_show(n, c):
    counter= 0
    for i in range(1, n+1):
        if i < 10:
            if i == c:
                counter+= 1
        if i > 9:
            digit = i % 10
            if digit == c:
                counter+= 1
            i //= 10
    return counter

print(it_show(n, c))

对不起,我的英语一开始就不太好。

在任务中强调使用数字,而不是字符串。

我需要输入n,c.Program需要return输入1到n(含n)的个数,c显示up.Etc。 n=20 and c=5 return 是 2.Because 从 1 到 20,5 出现在数字 5 和 15 中,也就是 2 numbers.In 这种情况下的代码 works.But 如果我输入 n=14 和 c=1 return 是 2,但它需要蜜蜂 6 因为从 1 到 14(包括 14)有 6 个数字中有 c(1) (1, 10 , 11, 12, 13, 14).

n = int(input("Input n: "))
c = int(input("Input c: "))

def it_show(n, c):
    sc = str(c)
    counter= 0
    for i in range(1, n+1):
        if str(i).count(sc):
            counter += 1
    return counter

print(it_show(n, c))

像这样比较字符串会更容易理解并且(可能)更快。

如果将数字转换为字符串,然后从数字中计算 numbers 的个数会更容易:

n = int(input("Input n: "))
c = int(input("Input c: "))

def it_show(n, c):
    counter= 0
    c_str = str(c)
    for i in range(1, n+1):
        num_str = str(i)
        if c_str in num_str:    # if number c exists in number i
            counter += 1
    return counter

print(it_show(n, c))

输出

Input n: 14
Input c: 1
6

您可以检查一个数字是否是另一个数字的子串作为字符串。

n = 14
c = 1

def it_show(n, c):
    counter=0
    for i in range(1,n+1):
        if str(c) in str(i):
            counter+= 1
    return counter

print(it_show(n, c))

[输出]

6
def it_show(n,c):
counter = 0
for i in range(1,n+1):
    if str(c) in str(i):
        counter +=1
return counter

您可以使用 while 循环数字。

def it_show(n, c):

  counter = 0

  for i in range(1, n+1):

    while i > 0:

      if i % 10 == c: # if the right digit is equal to c
        counter += 1
        break # counter increased, and no need to check the other digits

      i //= 10 # integer division to eliminate the right digit, which was already checked

  return counter

print(it_show(20,5))
print(it_show(14,1))