Difference between revisions of "Learn Python from Khan Academy"
Jump to navigation
Jump to search
(Created page with "<pre> # Khan Academy # https://www.khanacademy.org/science/computer-science > Python Programming print (3+7) print (type(3+7)) #<class 'int'> print ("Hello") print (type("Hello"...") |
|||
| (One intermediate revision by the same user not shown) | |||
| Line 15: | Line 15: | ||
c = b[:] #[5, 13, 15] | c = b[:] #[5, 13, 15] | ||
print (c) | print (c) | ||
| − | d = b[0:2] #[5, 13] m=start from, n=up to but not included | + | d = b[0:2] #[5, 13] [m:n] m=start from, n=up to but not included |
print (d) | print (d) | ||
| Line 42: | Line 42: | ||
i = i + 1 | i = i + 1 | ||
| + | # ========================================================== | ||
# String | # String | ||
a = "This is a string" | a = "This is a string" | ||
| Line 63: | Line 64: | ||
# Sample of Factorial Program | # Sample of Factorial Program | ||
| + | |||
| + | # Window pop for an input | ||
#number = input("Enter a non-negative integer to take the factorial of:") | #number = input("Enter a non-negative integer to take the factorial of:") | ||
#number = eval(input("Enter a non-negative integer to take the factorial of:")) #python 3 | #number = eval(input("Enter a non-negative integer to take the factorial of:")) #python 3 | ||
| Line 76: | Line 79: | ||
# ========================================================== | # ========================================================== | ||
# Define a function | # Define a function | ||
| − | def | + | # Interactive |
| + | def factorial1(number): | ||
product = 1 | product = 1 | ||
for i in range(number): | for i in range(number): | ||
| Line 84: | Line 88: | ||
# Use of function | # Use of function | ||
user_input = 5 | user_input = 5 | ||
| − | factorial_of_user_input = | + | factorial_of_user_input = factorial1(user_input) |
print (factorial_of_user_input) | print (factorial_of_user_input) | ||
| − | print ( | + | print (factorial1(4)) |
| − | + | # Now we are doing the "Recursive" Factorial function | |
| − | # Now we are | ||
# Is it faster? | # Is it faster? | ||
| − | def | + | def factorial2 (number): |
if number <= 1: #base case | if number <= 1: #base case | ||
return 1 | return 1 | ||
else: | else: | ||
| − | return number * | + | return number * factorial2(nummber - 1) |
| − | # Comparing Iterative vs Recursive Functions | + | # Comparing Iterative vs Recursive Functions? |
# Fibonacci numbers | # Fibonacci numbers | ||
| Line 104: | Line 107: | ||
# Golden Ratio = two numbers next to each other | # Golden Ratio = two numbers next to each other | ||
# having the later divided by the former | # having the later divided by the former | ||
| − | # 21/13 ~ | + | # 21/13 ~ Golden ratio |
| − | # 55/34 ~ even closer to | + | # 55/34 ~ even closer to Golden ratio |
| − | # When a > b, (a+b)/a = a/ | + | |
| + | # When a > b, (a+b)/a = a/b = GOlden ratio | ||
# Assignment | # Assignment | ||
| Line 138: | Line 142: | ||
return (fibonacci_recursive2(n-1)+fibonacci_recursive2(n-2)) | return (fibonacci_recursive2(n-1)+fibonacci_recursive2(n-2)) | ||
#?? NameError: global name 'fibonacci_recursive' is not defined | #?? NameError: global name 'fibonacci_recursive' is not defined | ||
| + | |||
n = 5 | n = 5 | ||
print ("Fibonacci of " + str(n) + " is " + str(fibonacci_recursive2(n))) | print ("Fibonacci of " + str(n) + " is " + str(fibonacci_recursive2(n))) | ||
| Line 176: | Line 181: | ||
print (b) | print (b) | ||
| + | # Do a bit improvement | ||
def sort_insertion2(list): | def sort_insertion2(list): | ||
for index in range(1,len(list)): | for index in range(1,len(list)): | ||
| Line 188: | Line 194: | ||
print (b) | print (b) | ||
</pre> | </pre> | ||
| + | [[Category:Python]] | ||
Latest revision as of 12:39, 20 October 2013
# Khan Academy
# https://www.khanacademy.org/science/computer-science > Python Programming
print (3+7)
print (type(3+7)) #<class 'int'>
print ("Hello")
print (type("Hello")) #<class 'str'>
# List
a = [7,13,15]
a[0] = 5
b = a
print (b)
c = b[:] #[5, 13, 15]
print (c)
d = b[0:2] #[5, 13] [m:n] m=start from, n=up to but not included
print (d)
d.append(10) #[5, 13, 10]
print (d)
# Range
range(3) #[0, 1, 2]
range(1,6) #[1, 2, 3, 4, 5] up to but not including the upper
range(0,8,2) #[0, 2, 4, 6]
# ==========================================================
# For loop
sum = 0
for i in range(10):
sum = sum + i
print (sum)
# ==========================================================
# While loop
sum = 0
i = 0
while i < 10:
sum = sum + i
print (sum)
i = i + 1
# ==========================================================
# String
a = "This is a string"
len(a)
b = "This is another string"
a+b #Concatenate
b.split(' ') #['This', 'is', 'another', 'string']
b.find('no') #9
b.find('is') #2
b.replace('is','as') #'Thas as another string' Did not replace b
match_string = "3+4*2"
print (match_string)
eval(match_string) #11
eval(match_string +'1') #87
expression_string = "a + b"
eval(expression_string)
# Sample of Factorial Program
# Window pop for an input
#number = input("Enter a non-negative integer to take the factorial of:")
#number = eval(input("Enter a non-negative integer to take the factorial of:")) #python 3
# python 3 = the result of input is string as is
# python 2 = the result will be evaluated automatically
number = 2
product = 1
for i in range(number):
product = product * (i+1)
print (product)
# ==========================================================
# Define a function
# Interactive
def factorial1(number):
product = 1
for i in range(number):
product = product * (i+1)
return product
# Use of function
user_input = 5
factorial_of_user_input = factorial1(user_input)
print (factorial_of_user_input)
print (factorial1(4))
# Now we are doing the "Recursive" Factorial function
# Is it faster?
def factorial2 (number):
if number <= 1: #base case
return 1
else:
return number * factorial2(nummber - 1)
# Comparing Iterative vs Recursive Functions?
# Fibonacci numbers
# 0,1,1,2,3,5,8,13,21,34,55
# Add previous two numbers to be new number
# Golden Ratio = two numbers next to each other
# having the later divided by the former
# 21/13 ~ Golden ratio
# 55/34 ~ even closer to Golden ratio
# When a > b, (a+b)/a = a/b = GOlden ratio
# Assignment
# fibonacci(1) = 1
# fibonacci(3) = 2
# fibonacci(0) = 0
# Iterative Fibonacci Function
def fibonacci_interative(n):
print ("Fibonacci: " + str(n))
terms = [0,1]
i = 2
while i <=n:
terms.append(terms[i-1]+terms[i-2])
i = i+1
return terms[n]
# Recursive Fibonacci Function
def fibonacci_recursive1(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return (fibonacci_recursive1(n-1)+fibonnaci_recursive1(n-2))
def fibonacci_recursive2(n):
if n<2:
return n
else:
return (fibonacci_recursive2(n-1)+fibonacci_recursive2(n-2))
#?? NameError: global name 'fibonacci_recursive' is not defined
n = 5
print ("Fibonacci of " + str(n) + " is " + str(fibonacci_recursive2(n)))
# Sort
a = [7,1,3,5,2,8]
a.sort()
# Insertion Sort
# Starting with the 2nd position and compare with what's before it
# 2nd position: [7,"3",1,2,4,6] > ["3",7,1,2,4,6]
# 3rd position: [3,7,"1",2,4,6] > [3,"1",7,2,4,6] > ["1",3,7,2,4,6]
# 4th position: [1,3,7,"2",4,6] > [1,3,"2",7,4,6] > [1,"2",3,7,4,6]
# 5th position: [1,2,3,7,"4",6] > [1,2,3,"4",7,6]
# 6th position: [1,2,3,4,7,"6"] > [1,2,3,4,"6",7]
# STOP
def sort_insertion(list):
for index in range(1,len(list)):
value = list[index]
i = index - 1
while i >= 0:
if value < list[i]: # since the right number is less than the left
list[i+1] = list[i] # swap position - right number gets left number
list[i] = value # left nymber gets right number
i = i - 1
else:
break
a = [7,1,3,5,9,2,3]
print (a)
sort_insertion(a)
print (a)
b = [56,11,32,511,19,21,23]
print (b)
sort_insertion(b)
print (b)
# Do a bit improvement
def sort_insertion2(list):
for index in range(1,len(list)):
value = list[index]
i = index - 1 # i is the previous value
while i >= 0 and value < list[i]: # since the right number is less than the left
list[i+1] = list[i] # swap position - right number gets left number
list[i] = value # left nymber gets right number
i = i - 1
sort_insertion2(b)
print (b)