python简单算法记录(一)

1、python 生成10个100~1000内的随机数代码如下:

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、1234数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

 程序分析:可填写个、十、百位的数字都有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、输入某年某月某日,判断这一天是这一年的第几天?

  35日为例,应该先把前两个月加起来,然后再加上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、输入三个整数xyz,请把这三个数由小到大输出。(主要使用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、输出99口诀表

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))
You don't start over,Every step you take is forever.
原文地址:https://www.cnblogs.com/softerware/p/10771440.html