Baitap4-5-6-7
# Bai 4.1
def triangle():
return [(a,b,c) for a in range(1,11) for b in range(1,11) for c in range(1,11) if(a + b + c == 24 and a**2 + b**2 == c**2) ]
#triangle_compound = triangle()
#print(triangle_compound)
# Bai 4.2
import string
a = string.ascii_lowercase
def sum_char(string):
sumy = 0
for c in string.lower():
sumy += a.index(c) + 1
return sumy
my_char = ["masturbation", "pussy", "discipline", "beer", "familug"]
#for char in my_char:
#points = sum_char(char)
#print(points)
# Bai 4.3
def my_max(li):
maxi = 0
for i in li:
if i > maxi:
maxi = i
return maxi
my_li = [5,6,3,8,1,9,11,55,77,44.33,99.67,99.77,100,100.1]
#assert max(my_li) == my_max(my_li)
# Bai 4.5
def my_sum(li):
sumy = 0
for i in li:
sumy += i
return sumy
def my_prod(li):
prod = 1
for i in li:
prod *= i
return prod
def sum_and_prod(li):
return (my_sum(li),my_prod(li))
from functools import reduce
#assert sum_and_prod(my_li) == (sum(my_li), reduce(lambda x,y: x*y, my_li))
# Bai 5.2
import sys
#print(sys.platform)
# Bai 5.3
def fizzbuzz():
for i in range(1,101):
if i % 15 == 0:
print('FizzBuzz')
elif i % 3 == 0:
print('Fizz')
elif i % 5 == 0:
print('Buzz')
else:
print(i)
#fizzbuzz()
# Bai 5.4
def create_file(file_path):
with open(file_path, 'w') as fo:
for i in range(1,30000001):
if i % 2 == 0:
fo.write(i*2)
else:
fo.write('1')
def print_last_10_row(file_path):
with open(file_path) as f:
j = 30000001
for i in f:
j -= 1
if j <= 10:
print(i)
file_path = '/tmp/baitap54.txt'
# Bai 5.5
def cal_prod_char():
names = ''
with open('name.txt') as f:
for i in f:
names = i
my_li = []
for name in names.split(','):
my_li.append(name[1:-1])
result = 0
sort_li = sorted(my_li)
for j in sort_li:
result += sum_char(j) * sort_li.index(j)
return result
sum_my_char = cal_prod_char()
print(sum_my_char)
# Bai 5.6
def path_counter(x,y):
path = {}
#generate path[list] for matrix x*y
path[x,y] = 0
# matrix 0
if(x==1 and y==1):
return 0
# matrix 1
if(x==1 or y==1):
return 1
# path of the horizontal and vertical border
for coor_x in range(x-1,0,-1):
path[coor_x,y] = 1
for coor_y in range(y-1,0,-1):
path[x,coor_y] = 1
# loop to fill path of all other note
for coor_x in range(x-1,0,-1):
for coor_y in range(y-1,0,-1):
path[coor_x,coor_y] = path[coor_x+1,coor_y] + path[coor_x,coor_y+1]
return path
path = path_counter(11,11)
print(path[1,1])
# Bai 6.1
# Bai 6.2
this_li = ['meo', 'bo', 'ga', 'cho', 'chim', 'lon']
new_li = [(a,b) for a in this_li[0::2] for b in this_li[1::2] if( this_li[0::2].index(a) == this_li[1::2].index(b))]
print(new_li)
# Bai 6.3
import calendar
month = calendar.monthrange(2016,1)
print(month[1])
my_month = []
for i in range(1,13):
my_month.append((i,calendar.month_name[i],calendar.monthrange(2016,i)[1]))
print(my_month)
def print_month():
with open('tmp/64out.txt', 'w') as fo:
for i in my_month:
fo.write(i)
fo.write('\n')
# Bai 6.4
def rprint(n):
if n > 0:
rprint(n-1)
print(n)
rprint(5)
# Bai 6.5
fibo = [1,1]
def gen_fibo_sum_even(fibo):
fibo_sum = 0
while fibo[1] < 4000000:
tmp = fibo[1]
fibo[1] = fibo[0] + fibo[1]
fibo[0] = tmp
if fibo[1] % 2 == 0:
fibo_sum += fibo[1]
return fibo_sum
fibo_sum = gen_fibo_sum_even(fibo)
print(fibo_sum)
# Bai 6.6
def add_comma_left(string):
result = ''
for i in range(len(string)-1,-1,-1):
result = string[i] + result
if (i != len(string) -1) and ((len(string) - i) % 3 == 0):
result = '.' + result
return result
def to_string(float_num):
result = ''
tmp = str(float_num).split('.')
left = tmp[0]
return add_comma_left(left) + ',' + tmp[1]
a = to_string(22111234567.89101)
print(a)
# Bai 6.7
def my_sum(*li):
sum = 0
for i in li:
sum += i
return sum
print(my_sum(1,2,3,4,5,6,7))
print(my_sum(1,2,3,4,5,6,7,8,9))INFO