简单的算法编程题
1、判断1到100的素数
def search_prime():
for n in range(1,100):
if n == 1 or n==2:
yield n
else:
for m in range(2,n):
if n%m == 0:
break
else:
yield n
for item in search_prime():
print item
2、递归相加:1 + (1+2)+(1+2+3)+......(1+2+3.......n)
def recu_add(n):
if n == 1:
return 1
return recu_add(n-1) + n*(n+1)/2
print recu_add(3)
3、字符串翻转
def reverse_word(string):
str_list = list(string)
for i,j in zip(range(len(str_list)/2),range(len(str_list)-1,0,-1)):
str_list[i],str_list[j] = str_list[j],str_list[i]
return ''.join(str_list)
4、IPV4地址转换为整数:
def ip_to_int(ip):
ip_list = map(lambda item : int(item),ip.split('.')[::-1])
sum = 0
for index,item in enumerate(ip_list):
sum += item<<8*index
return sum
print ip_to_int('192.168.199.1')
5、判断字符串是否为回文字符串。
回文字符串,其实就是类似,上海自来水来自海上,前后念是一样一样的。
ef isPalind(string):
start,end = 0,len(string) - 1
while start < end:
if string[start] != string[end]:
return False
start += 1
end -= 1
return True
6、取出字符串的最大回文字符串
分两种情况,最长回文是基数个和偶数个。
def longest_palind_in_string(string):
if len(string) == 1:
return string,1
if not string:
return ''
longest_palind = ''
for center in range(1,len(string)):
#最长回文长度是偶数
start,end = center-1 ,center
#最大回文长度是基数
start,end = center-1 ,center+1
while start>=0 and end <= len(string) - 1:
if string[start] != string[end]:
break
longest_palind = string[start:end+1]
start -= 1
end += 1
return longest_palind
print longest_palind_in_string('adbcbw')
7、把乘法口诀按三角形打出来。
def mul_table():
for i in range(1,10):
for j in range(1,i+1):
print '{0}*{1}={2}'.format(i,j,i*j),
print '\n'
8、打印三角形,如下:
1 *
2 **
3 ***
4 ****
5 *****
6 ******
7 *******
8 ********
9 *********
10 **********
我就是想把python中的一种特性写出来:
1 *
2 **
3 ***
4 ****
5 *****
6 ******
7 *******
8 ********
9 *********
10 **********
即变量*个数,即复制变量,引用还是相同。
--------EOF---------
微信分享/微信扫码阅读
微信分享/微信扫码阅读