秃头的一天

  1. 使用内置 enumerate 函数进行遍历:

    for index, item in enumerate(sequence):
        process(index, item)

    实例

    >>> sequence = [12, 34, 34, 23, 45, 76, 89]
    >>> for i, j in enumerate(sequence):
    ...     print(i, j)
    ... 
    0 12
    1 34
    2 34
    3 23
    4 45
    5 76
    6 89
  2. for 循环 1-100 所有整数的和

    #!/usr/bin/env python3
    
    n = 0
    sum = 0
    for n in range(0,101):# n 范围 0-100
        sum += n
    print(sum)
  3. 使用循环嵌套来实现99乘法法则:

    #!/usr/bin/python3
    
    #外边一层循环控制行数
    #i是行数
    i=1
    while i<=9:
         #里面一层循环控制每一行中的列数
         j=1
         while j<=i:
              mut =j*i
              print("%d*%d=%d"%(j,i,mut), end="  ")
              j+=1
         print("")
         i+=1
  4. for 循环的嵌套使用实例:

    #!/usr/bin/python3
    
    for i in range(1,6):
       for j in range(1, i+1):
          print("*",end='')
       print('\r')

    输出结果:

    *
    **
    ***
    ****
    *****
  5. 1-100 的和:

    >>> sum(range(101))
    5050
  6. while 循环语句和 for 循环语句使用 else 的区别:

    • 1、如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,则执行 else 语句。
    • 2.如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行!
  7. 关于pass的作用:

    pass只是为了防止语法错误。

    if a>1:
        pass #如果没有内容,可以先写pass,但是如果不写pass,就会语法错误

    pass就是一条空语句。在代码段中或定义函数的时候,如果没有内容,或者先不做任何处理,直接跳过,就可以使用pass。

  8. #十进制转化
    
    while True:
        number = input('请输入一个整数(输入Q退出程序):') 
        if number in ['q','Q']:
            break                #如果输入的是q或Q,结束退出
        elif not number.isdigit():
            print('您的输入有误!只能输入整数(输入Q退出程序)!请重新输入')
            continue         #如果输入的数字不是十进制,结束循环,重新开始
        else :
                number = int(number)
                print('十进制 --> 十六进制 :%d -> 0x%x' %(number,number))
                print('十进制 -->   八进制 :%d -> 0o%o' %(number,number))
                print('十进制 -->   二进制 :%d ->'%number,bin(number))
  9. 冒泡排序,python 版本

    解析:很经典的排序方式,从数组中的第0个元素开始,与后面一个元素进行比较,如果前面的元素大于后面的元素,就调换位置,循环到最后(即:a0与a1比较得到结果后,a1与a2比较...),最大的元素被换到数组最末尾,剔除掉最后一个元素,在余下的数组元素中进行上述操作,到最后,整个数组呈现从小到大的排序

    # python 冒泡排序
    
    def paixu(li) :
        max = 0
        for ad in range(len(li) - 1):
            for x in range(len(li) - 1 - ad):
                if li[x] > li[x + 1]:
                    max = li[x]
                    li[x] = li[x + 1]
                    li[x + 1] = max
                else:
                    max = li[x + 1]
        print(li)
    paixu([41,23344,9353,5554,44,7557,6434,500,2000])
  10. 猜拳小游戏

    import random
    while 1:
        s=int(random.randint(1,3))
        if s==1:
            ind="石头"
        elif s==2:
            ind="剪刀"
        elif s==3:
            ind="布" 
        m=input('输入石头,剪刀,布,输入end结束游戏:')
        
        blist=['石头','剪刀','布']
        
        if(m not in blist) and (m!='end'):
            print("输入错误,重试:")
        elif(m=='end')and(m not in blist):
            print(ind)
            print("\n游戏退出")
            break
        elif m==ind:
            print("平")
        elif (m == '石头' and ind =='剪刀') or (m == '剪刀' and ind =='布') or (m == '布' and ind =='石头'):
            print ("电脑出了: " + ind +",你赢了!")
        else:
            print ("电脑出了: " + ind +",你输了!")
  11. 原九九乘法表逆时针输出:

    
    <pre>for i in range(9,0,-1):
        for j in range (1,i):
            print("\t",end="")
        for k in range (i,10):
            print("%dx%d=%d" % (i,k,k*i), end="\t")
        print()
  12. 彩票游戏

    import random
    
    t1="开始游戏"
    t2="结束游戏"
    print(t1.center(50,"*"))
    data1=[]
    money=int(input("输入投入的金额:"))
    print("你现在余额为:%d元"%money)
    while 1:
        for i in range(6):
            n = random.choice([0, 1])
            data1.append(n)
        if money<2:
            print("你的余额不足,请充值")
            m=input("输入投入的金额:")
            if int(m)==0:
                break
            else:
                money=int(m)
        while 1:
            j=int(input("输入购买彩票数量"))
            if money-j*2<0:
                print("购买后余额不足,请重新输入")
            else:
                money = money - j * 2
                print("你现在余额为:%d元" % money)
                break
        print("提示:中奖数据有六位数,每位数为0或者1")
        n2=input("请猜测中奖数据:(输入的数字为0或1)")
        print(str(data1))
        f=[]
        for x in n2:
            f.append(x)
        f1 = str(f)
        f2 = f1.split("'")
        f3 = "".join(f2)
        print("你猜测的数据为:", f3)
        if f3==str(data1):
            print("中奖数字为:",data1)
            print("恭喜你中大奖啦")
            money=money+j*100
            print("你现在余额为:%d元" % money)
        else:
            print("中奖数字为:", data1)
            print("没有中奖,请继续加油")
        con = input("请问还要继续么?结束请输入no,继续请任意输入字符:")
        if con=="no":
            break
        data1=[]
    print(t2.center(50,"*"))
    print("你的余额为:%d元"%money)
  13. 生成直观的九连环解法:

    #!/usr/bin/python
    x = ["-θ","-θ","-θ","-θ","-θ","-θ","-θ","-θ","-θ"]
    y = ["—","—","—","—","—","—","—","—","—"]
    def down(n, l): #拆解
        v = len(l) #计算数列个数用于改变数列对应位置
        if n>2:
            down(n-2, l) #拆下n-2的环
            l[v-n] = "—" #将v-n位"-θ"改为"—" 表示拆下
            for x in l:  #输出列表每一个元素
                print(x,end=' ')
            print() #换行
            up(n-2, l) #装上n-2位
            down(n-1, l)#拆下n-1位, 后面同理
        if n==2:
            l[v-2], l[v-1] ="—","—"
            for x in l:
                print(x,end=' ')
            print()
        if n<2:
            l[v-1] = "—"
            for x in l:
                print(x,end=' ')
            print()
    def up(n, l):
        v = len(l)
        if n>2:
            up(n-1, l)
            down(n-2, l)
            l[v-n] = "-θ"
            for x in l:
                print(x,end=' ')
            print()
            up(n-2, l)
        if n==2:
            l[v-2], l[v-1] = "-θ","-θ"
            for x in l:
                print(x,end=' ')
            print()
        if n<2:
            l[v-1] ="-θ"
            for x in l:
                print(x,end=' ')
            print()
    
    print("拆解\n")
    for i in x:
        print(i,end=' ')
    print()
    down(9, x)
    print('---------------------------------\n','装上\n')
    for i in y:
        print(i,end=' ')
    print()
    up(9, y)
    print("结束")

    九连环拆解,递归算法

     def down(n):
        if n>2:
            down(n-2)
            print('卸下',n,'环')
            up(n-2)
            down(n-1)
        if n==2:
            print('卸下 {},{} 环'.format(n,n-1))    
        if n<2:
            print('卸下',n,'环') 
            
    def up(n):
        if n>2:
            up(n-1)
            down(n-2)
            print("装上",n,"环")
            up(n-2)
        if n==2:
            print("装上 %d,%d 环" % (n,n-1))
            
        if n<2:
            print("装上",n,"环")
    print("拆解")
    down(2)
    print('---------------------------------\n','装上')
    up(3)
    print("结束")
  14. 选择排序python版:

    a=[1,5,4,2,2,21,12,7,0]
    b=list(set(a))  # 建立新的列表,嵌套的是集合(除去冗余元素并自动排序)
    c=[]  # 建立空列表,用来存放选择排序的数据
    for j in b: #集合列表中选择元素
        for i in a: #列表中选择元素,
            if i ==j:
                c.append(i)
    
    print(c)
    
    '''
    我输入的列表元素集合有:1,2,4,5,12,21(已排好序并除去冗余)
    其中我依次选择集合中的各个数据,与原来列表的元素相比
    如果相等,我就把a集合的相对应的数据存到空列表里
    '''

    当然,有一种更方便的排序方式:

    a=[1,2,5,8,3,6,6,6,6,6]
    a.sort()
    print(a)
  15. 一个四位数 abcd,满足 abcd * 4 = dcba,求这个数:

    for i in list(range(1000,2500)):
        num2 = i*4
        a = i //1000
        b = i % 1000//100
        c = i % 1000%100//10 
        d = i % 10 
        e = num2 //1000
        f = num2 % 1000//100
        g = num2 % 1000%100//10 
        h = num2 % 10 
    
        if a==h:
            if b==g:
                if c== f:
                    if d==e:
                        print(num2,end=',')
posted @ 2020-12-07 21:47  亓浩  阅读(93)  评论(0)    收藏  举报