zoukankan      html  css  js  c++  java
  • 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.
  • 相关阅读:
    用CSS3实现上下左右箭头
    让input框只能输入数字
    给内联元素设置宽高的几种方式
    当文本溢出包含的元素时加省略号之text-overflow
    通过box盒子模型给元素内容设置居中
    CSS3中的字体rem
    封装一个取消事件冒泡的方法
    HTML5 web workes实现多线程
    通过imeMode禁用键盘只能输入数字
    jquery的children方法和css3选择器配合使用
  • 原文地址:https://www.cnblogs.com/softerware/p/10771440.html
Copyright © 2011-2022 走看看