ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό Έλεγχος Ροής - Παραδείγµατα Χειµερινό Εξάµηνο 2014
Δίσεκτο έτος Ένα έτος είναι δίσεκτο αν διαιρείται ακριβώς µε το 400 ή διαιρείται ακριβώς µε το 4 και δεν διαιρείται ακριβώς µε το 100 Υπολογίστε αν ένα δοθέν έτος είναι δίσεκτο year = int(input('enter a year: ')) if year%400 == 0: print(year, 'is a leap year') elif year%4 == 0 and year%100!= 0: print(year, 'is a leap year') else: print(year, 'is a common year') 2
ln(2) συγκλίνον άθροισµα Ο φυσικός λογάριθµος του 2 µπορεί να υπολογιστεί µε την εξίσωση: ln 2 = ln(2) = 1/1 1/2 + 1/3 1/4 = 1X k=1 from math import log print('computes ln(2) up to a given accuracy ) log(): φυσικός error = float(input('allowed error = ')) λογάριθµος sum=0 log(x,base)= previous=1000 #a very large integer log(x)/log(base) sign=-1 i=1 while abs(sum-previous)>error: previous=sum sign=sign*(-1) sum=sum+sign/float(i) i=i+1 print('%f %f %10.8f % (sum, log(2), abs(sum-log(2)))) ( 1) k+1 k 3
Προπαίδεια του 7 Τύπωσε στοιχισµένα την προπαίδεια του 7 print ('Προπαίδεια του 7') for i in range (1,11): print('%2d x 7 = %2d'%(i,i*7)) 1 x 7 = 7! 2 x 7 = 14! 3 x 7 = 21! 4 x 7 = 28! 5 x 7 = 35! 6 x 7 = 42! 7 x 7 = 49! 8 x 7 = 56! 9 x 7 = 63! 10 x 7 = 70! 4
Πίνακας προπαίδειας Τύπωσε στοιχισµένα τις προπαίδειες του 1 εώς του 10 print ('Πίνακας Προπαίδειας') for i in range (1,11): for j in range (1,11): print('%2dx%d=%2d'%(i,j,i*j),end=' ') print() Τυπώνει ένα κενό στο τέλος αντί να αλλάξει γραµµή 1x1= 1 1x2= 2 1x3= 3 1x4= 4 1x5= 5 1x6= 6 1x7= 7 1x8= 8 1x9= 9 1x10=10! 2x1= 2 2x2= 4 2x3= 6 2x4= 8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18 2x10=20! 3x1= 3 3x2= 6 3x3= 9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27 3x10=30! 4x1= 4 4x2= 8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36 4x10=40! 5x1= 5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45 5x10=50! 6x1= 6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54 6x10=60! 7x1= 7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63 7x10=70! 8x1= 8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72 8x10=80! 9x1= 9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81 9x10=90! 10x1=10 10x2=20 10x3=30 10x4=40 10x5=50 10x6=60 10x7=70 10x8=80 10x9=90 10x10=100! 5
Τρίγωνο από αστεράκια Τυπώστε ένα ορθογώνιο τρίγωνο µε βάση και ύψος x αστεράκια x = int(input('input triangle\'s height: ')) for i in range (1,x+1): for j in range (1,i+1): print('*',end='') print() x = 5 *! **! ***! ****! *****! x = int(input('input triangle\'s height: ')) for i in range (1,x+1): print(i*'*') 6
Δέντρο από αστεράκια Τυπώστε ένα δέντρο από αστεράκια µε ύψος x x = int(input('input tree\'s height: ')) for i in range (1,x+1): for j in range (1,x-i+1): print(' ',end='') for j in range (1,2*i): print('*',end='') print() x = 5 *! ***! *****! *******! *********! x = int(input('input tree\'s height: ')) for i in range (1,x+1): print(" "*(x-i),end='') print("*"*(2*i-1)) 7
Ύψωση σε δύναµη: x y x = int(input('input base: ')) y = int(input('input power: ')) value = 1 for i in range(0, y): value *= x print('%d to the power of %d = %d' % (x, y, value)) x = int(input('input base: ')) y = int(input('input power: ')) from math import pow print('%d to the power of %d = %d' % (x, y, pow(x,y))) 8
Παραγοντικό: x! x! = 1*2*3* *x x = int(input('input a number: ')) f = 1 for i in range(1,x+1): f *= i print('%d! = %d' % (x,f)) x = int(input('input a number: ')) from math import factorial print('%d! = %d' % (x, factorial(x))) 9
Υπολογισµός αθροίσµατος ψηφίων ακέραιου αριθµού x = 4579, dsum = 4+5+7+9 = 25 n = int(input('input a number: ')) dsum = 0 while n>0: dsum += n%10 n//=10 print('the sum of the number\'s digits is', dsum) n = int(input('input a number: ')) dsum = 0 s = str(n) for i in s: dsum+=int(i) print('the sum of the number\'s digits is', dsum) 10
Υπολογισµός µέσης τιµής a = [4,5,7,9], µ = (4+5+7+9)/4 µ = 1 1 N N i= 0 a[ i] s = input('input a set of numbers separated by commas: ') a = [eval(x) for x in s.split(",")] print('the mean of your numbers is',sum(a)/len(a)) 11
Υπολογισµός τυπικής απόκλισης a = [4,5,7,9], µ = (4+5+7+9)/4, σ = 1 1 N N i= 0 ( a[ i] µ ) 2 from math import sqrt s = input('input a set of numbers separated by commas: ') a = [eval(x) for x in s.split(",")] print('the mean of your numbers is',sum(a)/len(a)) sumdiff = 0.0 for num in a: sumdiff += (num-sum(a)/len(a))**2 stdev = sqrt(sumdiff/len(a)) print('the standard deviation is',stdev) 12
Άσκηση: άθροισµα ζυγών Δίνεται µια λίστα αριθµών. Βρές το άθροισµα των ζυγών στη λίστα s = input('input a set of numbers separated by commas: ') a = [int(x) for x in s.split(",")] esum = 0 for x in a: if x%2 ==0: esum = esum + x print("the sum is: ", esum) s = input('input a set of numbers separated by commas: ') a = [int(x) for x in s.split(",")] print("the sum is: ", sum([x for x in a if x%2==0])) 13
Άσκηση Δίνονται δύο λίστες αριθµών. Υπολόγισε µια νέα λίστα που περιέχει το γινόµενο όλων των ζευγών από τις 2 λίστες Π.χ. L1 = [3,4,5], L2 = [1,2], L3 = [3,6,4,8,5,10] s1 = input('input a set of numbers separated by commas: ') L1 = [int(x) for x in s1.split(",")] s2 = input('input a set of numbers separated by commas: ') L2 = [int(x) for x in s2.split(",")] L3 = [] for x in L1: for y in L2: L3.append(x*y) print(l3) 14
Ορισµός και χρήση πινάκων Μπορούµε να χρησιµοποιήσουµε λίστες ως πίνακες Μπορούµε να χρησιµοποιήσουµε και πλειάδες Ποια η διαφορά; >>> A = [4,5,6,7] >>> A[2] 6 >>> B = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> B[2][1] 8 µονοδιάστατος πίνακας: A = [4 5 6 7] προσπέλαση του Α i µε A[i] δισδιάστατος πίνακας: B = 2 1 2 3 3 44 5 65 7 8 9 προσπέλαση του B ij µε B[i][j] 15
Ορισµός και χρήση πινάκων Η αρχικοποίηση ενός πίνακα συγκεκριµένων διαστάσεων µπορεί να γίνει µε την εντολή for >>> A = [0 for i in range(10)] >>> A [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] >>> M=[[0 for i in range(3)] for i in range(3)] >>> M [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 16
Πρόσθεση πινάκων Πρόσθεση δύο πικάνων διαστάσεων N x M N=M=2 A = [[0.0 for j in range(m)] for i in range(n)] apple apple apple B = [[0.0 for j in range(m)] for i in range(n)] 1 2 5 6 6 8 C = [[0.0 for j in range(m)] for i in range(n)] 3 4 + 7 8 = 10 12 for j in range(m): A[i][j] = float(input('a[%d][%d]: ' % (i, j))) for j in range(m): B[i][j] = float(input('b[%d][%d]: ' % (i, j))) for j in range(m): C[i][j] = A[i][j] + B[i][j] for j in range(m): print('c[%d][%d]:%7.2f ' % (i, j, C[i][j]), end = '') print('') 17
Πολλαπλασιασµός πινάκων N x N N=2 A = [[0.0 for j in range(n)] for i in range(n)] B = [[0.0 for j in range(n)] for i in range(n)] C = [[0.0 for j in range(n)] for i in range(n)] for j in range(n): A[i][j] = float(input('a[%d][%d]: ' % (i, j))) for j in range(n): B[i][j] = float(input('b[%d][%d]: ' % (i, j))) for j in range(n): for k in range(n): C[i][j] += A[i][k]*B[k][j] for j in range(n): print('c[%d][%d]:%7.2f ' % (i, j, C[i][j]), end = '') print('') apple apple apple 1 2 5 6 19 22 3 4 7 8 = 43 50 18
Εύρεση ελάχιστου σε πίνακα N=M=2 A = [[0.0 for j in range(n)] for i in range(n)] for j in range(m): A[i][j] = float(input('a[%d][%d]: ' % (i, j))) minelem = A[0][0] for j in range(m): if minelem > A[i][j]: minelem = A[i][j] print('the minimum element is ',minelem) Ερώτηση: Τι θα επιστρέψει το min(a); Ερώτηση: πως θα βρούµε το ελάχιστό ΚΑΙ τη θέση του; 19
Υπολογισµός ανάστροφου πίνακα N=2 M=3 A = [[0.0 for j in range(m)] for i in range(n)] inva = [[0.0 for j in range(n)] for i in range(m)] for j in range(m): A[i][j] = float(input('a[%d][%d]: ' % (i, j))) inva[j][i] = A[i][j] for i in range(m): for j in range(n): apple 1 2 3 A = 4 5 6 2 3 1 4 A T = 42 55 3 6 print('inva[%d][%d]:%7.2f ' % (i, j, inva[i][j]), end = '') print('') 20
Άσκηση Όρισε ένα άνω τριγωνικό πίνακα, µε τα στοιχεία από τη διαγώνιο και πάνω =1 M=[[0 for i in range(3)] for j in range(3)] for i in range(3): for j in range(3): if i<=j: M[i][j]=1 for row in M: print(row) 21