Определяемая пользователем функция для подсчета случаев случайным образом созданный список содержит целое число, начинающееся с n - PullRequest
1 голос
/ 11 апреля 2019

Новое в питоне и программировании в целом. Я написал функцию для генерации случайного списка без дубликатов и множество других вызываемых функций, которые вычисляют что-то из этого списка (например, медиана, среднее, четные, шансы,% n и т. Д.)

Проблема:

  1. Напишите функцию для подсчета количества целых чисел, которые начинаются с 1 и
  2. Напишите функцию для подсчета количества целых чисел, оканчивающихся на 1

Мой код

import random 
def fill(nx, x, y):
    lx = []
    j = 0
    while (j < nx):
        randNum = random.randint(x, y)
        if randNum not in lx:
            lx.append(randNum)
            j = j + 1
    return lx


def digit1x(lx):
#some kind of count
    cnt_1x = 0
#loop to iterate lx?
    for i in lx: # not sure what to really do from here
        if i == 
    return 0


 def digitx1(lx):
     # same problem 
 return 0

 def sum(lx):
     s=0
     for i in lx:
     s+=i
 return s

Вызов функций

n = 25 
a = 10 
b = 60 
myList = fill(n, a, b) 
print(myList)

выход

[32, 27, 57, 17, 14, 55, 29, 42, 23, 12, 11, 47, 60, 41, 31, 20, 
21, 26, 56, 35, 30, 44, 54, 10, 50]

Sum ==   844 
Minimum  10 
Maximum ==  60 
Average ==  33.76

Ожидаемое

x = digit1x(myList) 
print("10 the number of integers that start with the digit 1 == ", x) 


output: "...==" 5  



y = digitx1(myList)
 print("11 the number of integers that end with the digit 1 == ", y)


output:"...==" 4

Ответы [ 2 ]

1 голос
/ 11 апреля 2019
def digit1x(lx):
    return len([i for i in lx if str(i)[0]=='1'])

def digitx1(lx):
    return len([i for i in lx if str(i)[-1]=='1'])

и если вам не хватает памяти и ресурсов обработки:

def digit1x(lx):
    return sum(1 for i in lx if i%10==1])

def digitx1(lx):
    return sum(1 for i in lx if i/(10**int(math.log(i,10)))==1)

В этом случае вы избегаете преобразования строк и используете только некоторые быстрые вычисления. Вы также используете генератор для суммы, и, следовательно, дополнительный список не создается.

0 голосов
/ 11 апреля 2019

Это должно сделать работу

def count1(lx):
    return len([i for i in lx if i%10==1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...