python简单算法记录(一) 1、python 生成10个100~1000内的随机数,代码如下: 6、一个整数,他加上100后是一个完全平方数,再加上268又是一个完全平方数,请问该数是多少?
from random import randint a = [randint(100,1000) for i in range(10)] print(a)
2、python冒泡算法,代码如下(降序排列):
a = [9, 2, 8, 6, 4] for i in range(len(a)-1): for j in range(len(a)-1-i): if a[j] < a[j+1]: a[j], a[j+1] = a[j+1], a[j] print(a)
运行结果:[9, 8, 6, 4, 2]
如果改为升序排列,代码如下:
a = [9, 2, 8, 6, 4] for i in range(len(a)-1): for j in range(len(a)-1-i): if a[j] > a[j+1]: a[j], a[j+1] = a[j+1], a[j] print(a)
运行结果:[2, 4, 6, 8, 9]
3、判断字符串是回文的算法:
s = input('请输入一个字符串:') if not s: print('请不要输入空字符串!') s = input('请重新输入一个字符串:') a = len(s) i = 0 count = 1 while i <= (a/2): if s[i] == s[a-i-1]: count = 1 i += 1 else: count = 0 break if count == 1: print('您所输入的字符串是回文') else: print('您所输入的字符串不是回文')
4、有1、2、3、4数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填写个、十、百位的数字都有4个,组成所有排序后再去掉不满足条件的。
for i in range(1,5): for j in range(1,5): for k in range(1,5): if (i != k) and (i != j) and (j != k): print (i,j,k)
5、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
注:利用数轴来分界定位,定义时需把奖金定义成长整型。
bon1 = 100000*0.1 bon2 = bon1 + 100000*0.075 bon4 = bon2 + 200000*0.05 bon6 = bon4 + 200000*0.03 bon10 = bon6 + 400000*0.015 i = int(input('input gain: ')) if i <= 100000: bon = i*0.1 elif i <= 200000: bon = bon1 + (i - 100000)*0.075 elif i <= 400000: bon = bon2 + (i - 200000)*0.05 elif i <= 600000: bon = bon4 + (i - 400000)*0.03 elif i<= 1000000: bon = bon6 + (i - 600000)*0.015 else: bon = bon10 + (i - 1000000)*0.01 print('bonus = ', bon)
6、一个整数,他加上100后是一个完全平方数,再加上268又是一个完全平方数,请问该数是多少?
1)程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,既是结果。
import math for i in range(100000): x = int(math.sqrt(i + 100)) y = int(math.sqrt(i + 268)) if(x*x == i + 100)and(y*y == i + 268): print(i)
7、输入某年某月某日,判断这一天是这一年的第几天?
以3月5日为例,应该先把前两个月加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需要考虑多加一天。
year = int(input('year: ')) month = int(input('month: ')) day = int(input('day: ')) months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334) if 0 <= month <= 12: sum = months[month - 1] else: print('data error') sum += day # 判断年份是否为闰年 if (year%400 == 0)or((year%4 == 0)and(year % 100 != 0)): leap = 1 if (leap == 1)and(month > 2): sum += 1 print('it is the %dth day.' %sum )
8、输入三个整数x、y、z,请把这三个数由小到大输出。(主要使用sort函数)
s = [] for i in range(3): x = int(input("integer: ")) s.append(x) s.sort() print(s)
9、用*号输出字母C的图案。(先在纸上写出,再分行输出,需要修改)
print('Hello Python world! ') print('*'*10) for i in range(5): print('* *') print('*'*10) print('* '*6)
10、输出9乘9口诀表
for i in range(1, 10): for j in range(1, 10): result = i * j # %d叫做占位符,你说的题目中第一个%d在运行时会转换成i的值,第二个%d会转换成j的值,第三个%-3d会转换成result的值,%-3d里面的-3是什么意思,result的长度小于3,也就是是一位数或者是两位数,就左对齐输出数字后面不空格,举例说明吧,加入result是5就输出5后面再跟两个空格;倘若结果是两位数67就输出67后面跟一个空格;倘若result的长度大于或等于3,就输出原数字 print('%d * %d = %-3d'%(i, j, result))