21

(15 відповідей, залишених у Python)

Дякую за код. Треба деякий час щоби осмислити, не скоро ).

Я правда, побачив по ходу в себе помилку, хоча вона не впливає:

for i in range(n,2*n):

.

Правильно було б:

for i in range(n,2*n+1):
koala написав:

А, вибачте, для стрічок не sum, а ''.join.

О, а я вже хотів питати.

Хм, треба обміркувати все це ...

Підкажіть, будь ласка, як перетворити функцію

def my_name():
    my_name=""
    for i in range (len(v)):
        my_name=my_name+random.choice(v)
    return my_name

у функцію-генератор.

Я користуюсь цією функцію для генерації випадкових імен:

import random

n=int(input('Введіть розмірність вектору '))

v = tuple("abcdefgh")
my_list = []

def my_name():
    my_name=""
    for i in range (len(v)):
        my_name=my_name+random.choice(v)
    return my_name

#def name_generator():
#    return sum(random.choice(v) for i in range (len(v)))

#print(name_generator())

for i in range (n):
    my_list.append(my_name())

print(tuple(my_list))

25

(15 відповідей, залишених у Python)

koala написав:

Оптимізувати за якою саме характеристикою? Пам'ять, час, довжина коду? Це не найгірший фрагмент у програмі, до речі.

Я так розумію, що код має бути компактним, тому очікую, що є прийоми, які цей же фрагмент можуть скоротити. Якщо можете підказати що можна вдосконалити, також щодо простішої генерації простих чисел - буду вдячний.

І ще питання. Теоретично пишеться, що можна змінні не оголошувати. Як бути з

my_list=[]

?

Спробую. Дякую.

27

(15 відповідей, залишених у Python)

Вийшов такий код:

n =int(input('Введіть n '))
my_list=[]

def isprime(n):
    '''check if integer n is a prime'''
    # make sure n is a positive integer
    n = abs(int(n))
    # 0 and 1 are not primes
    if n < 2:
        return False
    # 2 is the only even prime number
    if n == 2:
        return True
    # all other even numbers are not primes
    if not n & 1:
        return False
    # range starts with 3 and only needs to go up the squareroot of n
    # for all odd numbers
    for x in range(3, int(n**0.5)+1, 2):
        if n % x == 0:
            return False
    return True

for i in range(n,2*n):
    if isprime(i):
        my_list.append(i)

for i in range (1,len(my_list)):
    if my_list[i]-my_list[i-1] == 2:
        print(my_list[i-1],my_list[i])

Як можна оптимізувати:

for i in range (1,len(my_list)):
    if my_list[i]-my_list[i-1] == 2:
        print(my_list[i-1],my_list[i])

?
Дякую.

28

(15 відповідей, залишених у Python)

FakiNyan написав:

prime - то функція, що перевіряє, чи число є простим

А із якого модуля ця функія? Math пише, що не існує.

І що робить "pass"?

29

(15 відповідей, залишених у Python)

Знайшов такий код:

# t06_2

n =int(input('Введіть n '))

def isprime(n):
    '''check if integer n is a prime'''
    # make sure n is a positive integer
    n = abs(int(n))
    # 0 and 1 are not primes
    if n < 2:
        return False
    # 2 is the only even prime number
    if n == 2:
        return True
    # all other even numbers are not primes
    if not n & 1:
        return False
    # range starts with 3 and only needs to go up the squareroot of n
    # for all odd numbers
    for x in range(3, int(n**0.5)+1, 2):
        if n % x == 0:
            return False
    return True

Поясніть, будь ласка, "псевдокод":

for i in range(n,2*n):
    if prime(i):
        pass

Не розумію - функція prime не існує.

30

(9 відповідей, залишених у Python)

Я модифікував код як рекомендовано. Є питання. Чи існує функція подібна до sum(). Щось по типу mult(), щоби функцію 2 зробити подібною до першої.

n =int(input('Введіть n '))

def series_sum(l):
    return sum( 1/(l*l+i) for i in range(1,l+2) )

def my_function(n):
    f = 1
    for l in range (n+1):
        f*=series_sum(l)
    return f

print(my_function(n))

31

(9 відповідей, залишених у Python)

FakiNyan написав:

так, ось це правильно?
https://cdn.discordapp.com/attachments/333936584481177600/422865453313032194/unknown.png

Так, "зійшлись".

32

(9 відповідей, залишених у Python)

Ха, таки щось виходить ). Дякую.

А що таке генераторні вирази і як їх використовувати в данному випадку?

Є ризик, що після отримання root-прав GooglePlay не буде правильно ідентифікувати користувача і не буде дозволяти інсталювати програми? Це мені тут підказують (не з Інтернету).

Доброго дня!

Підкажіть, будь ласка, як підступитися до наступної задачі:
https://replace.org.ua/extensions/om_images/img/5aa6eaeadc9de/2.jpg

Як можна генерувати прості числа із проміжку [n,2n]?

Дякую!

35

(9 відповідей, залишених у Python)

Доброго дня!

Будь ласка, підкажіть чи правильно складена програма згідно завдання:
https://replace.org.ua/extensions/om_images/img/5aa6e81aad2a8/1.jpg

n =int(input('Введіть n '))

def my_function1(l):
    y = 0
    for i in range(1,l+2):
        y = y + 1/(pow(l,2)+i)
    return y

def my_function2(n):
    f = 1
    for l in range (n+1):
        f=f*my_function1(l)
    return f


print(my_function2(n))

Як можна вдосконалити програму? Дякую!

Дякую. Але... 471 сторінка, без досвіду, важкувато. Можете пояснити як для newbie?

Доброго дня!

Маю HTC One XL без карти. У зв'язку із перевантаженням папки /data поставив собі програму Link2SDPlus, щоби переносити програми на sdcard. Частину програм вдалось перенести, для інших Link2SDPlus вимагає root-права. Як дати їй цій права і чи варто це робити?

38

(3 відповідей, залишених у Python)

Є задача, в якій необхідно використати словник. Про структуру словника - що має бути ключем, нічого не сказано. Підкажіть, будь ласка, як би ви побудували цу структуру.

Задача:

Відомості про учня складаються з його унікального номера учнівського квитка, імені, прізвища, та назви класу (рік навчання та літера). Скласти словник і:

1) визначити. чи є в школі учні з однаковим прізвищем;
2) визначини, чи є учні з однаковим прізвищем в якихось паралельних класах;
3) визначити, чи є учні з однаковим прізвищем у якомусь класі;
4) визначити, в яких класах нараховується більше ніж 35 учнів;
5) отримати список учнів даного класу за зразками:
    прізвище ім'я
    прізвище і.
    і.прізвище.

І ще декілька пунктів.

Наскільки я розумію - формат має бути:

pupils={"Poroshenko":["Petro",123,"3-A"],"Yatseniuk":["Arseniy",113,"1-C"],"Grinevych":["Liliya",2223,"10-D"],}

39

(7 відповідей, залишених у Python)

Це працюючий варіант без Ваших правок. Відшліфую трохи пізніше.

horizontal = tuple("12345678")
vertical = tuple("abcdefgh")

x = tuple(input("Введіть поле, на якому стоїть ферзь "))
y = tuple(input("Введіть поле, на яке Ви хочете поставити ферзя "))

def is_correct(t):
    if (t[0] not in vertical) or (t[1] not in horizontal) or len(x)!=2:
        return print("".join(t),"- не входить до клітин шахової дошки")

def compareplus(m,n):
    return vertical.index(m)+horizontal.index(n)

def compareminus(m,n):
    return vertical.index(m)-horizontal.index(n)

is_correct(x)
is_correct(y)

list = []

for col in vertical:
    for row in horizontal:
        if col == x[0] or row == x[1] or compareplus(col,row) == compareplus(x[0],x[1]) or compareminus(col,row) == compareminus(x[0],x[1]) :
           list.append(col+row)
           print(list)

if (y[0]+y[1]) in list and x!=y:
    print('Ферзь може перейти з поля',x[0]+x[1],'на поле',y[0]+y[1])
else:print('Ферзь не може перейти з поля',x[0]+x[1],'на поле',y[0]+y[1])

40

(7 відповідей, залишених у Python)

Переписав з використанням функцій, але ще не додав перевірку на діагоналі (розумію цю ідею - графік функцій "y=x+a" та "y= -x +a", але треба реалізувати). Фактично формую список із доступних полів для ферзя.

horizontal = tuple("12345678")
vertical = tuple("abcdefgh")

x = tuple(input("Введіть поле, на якому стоїть ферзь "))
y = tuple(input("Введіть поле, на яке Ви хочете поставити ферзя "))


def is_correct(t):
    if (t[0] not in vertical) or (t[1] not in horizontal) or len(x)!=2:
        return print("".join(t),"- не входить до клітин шахової дошки")

is_correct(x)
is_correct(y)

list = []

for row in horizontal:
    for col in vertical:
        if row == x[1] or col == x[0]:
           list.append(col+row)

if (y[0]+y[1]) in list and x!=y:
    print('Ферзь може перейти з поля',x[0]+x[1],'на поле',y[0]+y[1])