Форум сайта python.su
0
Поскольку язык изучаю самостоятельно, без наличия навыков и опыта в других языках, возникла реальная проблема - отсутствие литературы с подробными примерами и задачами. В связи с этим нашел сборник заданий для паскаля и решаю их в питоне =D Для таких же новичков как я - будет полезно, а к сторожилам убедительная просьба - если есть ошибки, то прошу на них указать, дабы избежать их в дальнейшем (в т.ч. на синтаксис).
Обращаю внимание, что программы написаны на простом уровне (например без учета, что пользователь введет вместо числа букву и т.д.). Все скидываю одним кодом.
Если у кого есть интересные задачи (для начинающих) - прошу скидывать.
Если тема вызовет интерес - будет продолжение =)
Версия 2.7
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# найти значение выражения 1*1+2*2+...+n*n
n = input ('Input n: ')
n = int(n)
s = 0
n = range (0, n+1) # создаем список для создания цикла, т.к. к числа for неприменим
for i in n :
s = s + i*i
print s
# Создать из двух таблиц общую и элементы расставить по возрастанию.
# В общей таблице проверить ср арифметическое положительных и отрицательных чисел.
import random
A = range (-100, 100)
rand1 = random.sample (A, 6)
rand2 = random.sample (A, 6)
print ('First sequence: '), rand1
print ('Second sequence: '), rand2
B = rand1 + rand2
B.sort()
print ('General and rank-odered: '), B
C = [] # новый список для вычисления ср арифметического положительных элементов
D = [] # отрицательных
for x in B : # создаем список положительных элементов
if x >= 0 :
C.append (x)
else :
D.append (x) # отрицательных
s = 0
for i in C : # считаем общую сумму элементов положительных
s = s + i
s1 = 0
for i in D : # отрицательных
s1 = s1 + i
print ('arithmetic(al) mean of positive numbers = ')
print ('sum'), s, ('divide quantity'), len(C), (' = '), float(s)/len(C)
print ('arithmetic(al) mean of negative numbers = ')
print ('sum'), s1, ('divide quantity'), len(D), (' = '), float(s1)/len(D)
# Найти максимально число из четырех
a = input ('Insert first number: ')
b = input ('Insert second number: ')
c = input ('Insert third number: ')
d = input ('Insert fourth number: ')
A = [a, b, c, d]
B = max(A)
C = min(A)
print ('Max element: '), B
print ('Min elementL '), C
# Найти количество заданной буквы (слова) в тексте. Если буквы нет - уведомить.
A = raw_input ('Input the text: ')
B = raw_input ('What would you like to find? ')
x = A.count(B)
if x != 0 :
print 'The quantity of', B, 'is', A.count(B)
else :
print 'Is absent'
# Найти степень числа
A = input ('Input a number: ')
B = input ('Input a degree: ')
print 'Number', A, 'in' ,B ,'degree = ', pow(A,B)
# Найти факториал числа
A = input ('Input a number: ')
A = int(A)
B = range(1, A+1)
s = 1
for i in B :
s = s*i
print A, '! =', s
# Определить лежит ли заданная точка на прямой y = kx + 1
x1 = input ("Coordinate of line x1: ")
y1 = input ("Coordinate of line y1: ")
x2 = input ("Coordinate of line x2: ")
y2 = input ("Coordinate of line y2: ")
k = (y2-y1)/(x2-x1)
b = y2 - k*x2
x = input ("Check coordinate x")
y = input ("Check coordinate y")
if y == k*x + b :
print 'Ok'
else :
print 'No'
a = input (" Input a number to make a factorial: ")
a = int (a)
fac = 1
i = 0
while i < a :
i+=1
fac = fac*i
print facОтредактировано (Авг. 11, 2011 12:13:57)
Офлайн
7
Вот отличный сборник задач, особенно для питона: http://projecteuler.net/index.php?section=problems
Что касается решения приведенных задач, то все правильно, конечно, только надо все намного короче писать, ведь это не паскаль :). К примеру:
# найти значение выражения 1*1+2*2+...+n*n
print sum( k**2 for k in range(1,n+1) )
Офлайн
0
IsemСпасибо. Вот к тому и вопрос, что если есть возможность короче писать - убедительная просьба указать на эти недочеты.
Вот отличный сборник задач, особенно для питона: http://projecteuler.net/index.php?section=problems
Что касается решения приведенных задач, то все правильно, конечно, только надо все намного короче писать, ведь это не паскаль :). К примеру:# найти значение выражения 1*1+2*2+...+n*n
print sum( k**2 for k in range(1,n+1) )
Офлайн
7
Тогда еще один пример:
# Создать из двух таблиц общую и элементы расставить по возрастанию.
# В общей таблице проверить ср арифметическое положительных и отрицательных чисел.
# rand1 и rand2 - два списка чисел
B = sorted( rand1 + rand2 ) # получаем общий сортированный список
C = [i for i in B if i < 0] # получаем список отрицательных чисел
C_average = sum(C)/len(C) # среднее арифметическое чисел из C
Офлайн