Дякую за код. Треба деякий час щоби осмислити, не скоро ).
Я правда, побачив по ходу в себе помилку, хоча вона не впливає:
for i in range(n,2*n):
.
Правильно було б:
for i in range(n,2*n+1):
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Повідомлення користувача DimONN
Дякую за код. Треба деякий час щоби осмислити, не скоро ).
Я правда, побачив по ходу в себе помилку, хоча вона не впливає:
for i in range(n,2*n):
.
Правильно було б:
for i in range(n,2*n+1):
А, вибачте, для стрічок не 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))
Оптимізувати за якою саме характеристикою? Пам'ять, час, довжина коду? Це не найгірший фрагмент у програмі, до речі.
Я так розумію, що код має бути компактним, тому очікую, що є прийоми, які цей же фрагмент можуть скоротити. Якщо можете підказати що можна вдосконалити, також щодо простішої генерації простих чисел - буду вдячний.
І ще питання. Теоретично пишеться, що можна змінні не оголошувати. Як бути з
my_list=[]
?
Спробую. Дякую.
Вийшов такий код:
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])
?
Дякую.
prime - то функція, що перевіряє, чи число є простим
А із якого модуля ця функія? Math пише, що не існує.
І що робить "pass"?
Знайшов такий код:
# 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 не існує.
Я модифікував код як рекомендовано. Є питання. Чи існує функція подібна до 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))
так, ось це правильно?
Так, "зійшлись".
Ха, таки щось виходить ). Дякую.
А що таке генераторні вирази і як їх використовувати в данному випадку?
Є ризик, що після отримання root-прав GooglePlay не буде правильно ідентифікувати користувача і не буде дозволяти інсталювати програми? Це мені тут підказують (не з Інтернету).
Доброго дня!
Підкажіть, будь ласка, як підступитися до наступної задачі:
Як можна генерувати прості числа із проміжку [n,2n]?
Дякую!
Доброго дня!
Будь ласка, підкажіть чи правильно складена програма згідно завдання:
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-права. Як дати їй цій права і чи варто це робити?
Є задача, в якій необхідно використати словник. Про структуру словника - що має бути ключем, нічого не сказано. Підкажіть, будь ласка, як би ви побудували цу структуру.
Задача:
Відомості про учня складаються з його унікального номера учнівського квитка, імені, прізвища, та назви класу (рік навчання та літера). Скласти словник і:
1) визначити. чи є в школі учні з однаковим прізвищем;
2) визначини, чи є учні з однаковим прізвищем в якихось паралельних класах;
3) визначити, чи є учні з однаковим прізвищем у якомусь класі;
4) визначити, в яких класах нараховується більше ніж 35 учнів;
5) отримати список учнів даного класу за зразками:
прізвище ім'я
прізвище і.
і.прізвище.
І ще декілька пунктів.
Наскільки я розумію - формат має бути:
pupils={"Poroshenko":["Petro",123,"3-A"],"Yatseniuk":["Arseniy",113,"1-C"],"Grinevych":["Liliya",2223,"10-D"],}
Це працюючий варіант без Ваших правок. Відшліфую трохи пізніше.
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])
Переписав з використанням функцій, але ще не додав перевірку на діагоналі (розумію цю ідею - графік функцій "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])