美文网首页开发
Python正式课第七天

Python正式课第七天

作者: code与有荣焉 | 来源:发表于2019-11-12 18:31 被阅读0次

    练习

    1. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
    # 1.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
    from functools import reduce
    
    def compute():
        result = 0
        lst = []
        fenzi = 2
        fenmu = 1
        lst.append(fenzi / fenmu)
        for i in range(19):
            fenmu,fenzi = fenzi,fenmu+fenzi
            # tmp = fenzi
            # fenzi = tmp + fenmu
            # fenmu = tmp
            lst.append(fenzi / fenmu)
    
        # for k in lst:
        #     result += k
    
        result = reduce(lambda x,y: x+y,lst)
    
        return result
    
    print(compute())
    
    1. 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
    # 第一种方法
    num = input('请输入一个数字:')
    
    num = int(num)
    lst = []
    while num > 0:
        gewei = num % 10
        lst.append(gewei)
        num = num // 10
    
    print(len(lst))
    print(lst)
    
    
    num = 56789
    lst = []
    while num > 0:
        gewei = num % 10
        lst.append(str(gewei))
        num = num // 10
    
    print(len(lst))
    print(lst)
    
    strnum = '@'.join(lst)
    print(strnum)
    
    email = 'zhangsan@qq.com'
    infolst = email.split('@')
    print(infolst)
    print(infolst[0])
    print(infolst[1])
    
    email2 = '@'.join(infolst)
    print(email)
    
    # 第二种方法
    num = input('请输入一个数字:')
    print(len(num))
    num_reverse = num[::-1]
    print(num_reverse)
    
    
    1. 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
    
    
    num = int(input('请输入人数:'))
    
    lst = list(range(1,num+1))
    lst_len = len(lst)
    
    while lst_len > 2:
        #删除掉第三个元素
        lst.pop(2)
        #得到前面的子列表
        before = lst[:2]
        #得到后面的子列表
        lst = lst[2:]
        #合并后前两个列表
        lst.extend(before)
        lst_len = len(lst)
    
    print(lst[-1])
    
    1. 题:编写一个程序,根据控制台输入的事务日志计算银行帐户的净金额。 事务日志格式如下所示:
      D 100
      W 200
      D表示存款,而W表示提款。
      假设为程序提供了以下输入:
      D 300
      D 300
      W 200
      D 100
      然后,输出应该是:
      500
    a = ''
    if a:
        print('ddd')
    
    # isMan = True
    # tmp = not isMan
    # print(tmp)
    
    money = 0
    while True:
        cmd = input('请输入命令:')
    
        if not cmd:
            break
    
        # cmd = 'W 300'
        cmdlst = cmd.split(' ')
        if cmdlst[0] == 'D':
            if len(cmdlst) > 1:
                if cmdlst[1].isdigit():
                    money += int(cmdlst[1])
        elif cmdlst[0] == 'W':
            if len(cmdlst) > 1:
                if cmdlst[1].isdigit():
                    money -= int(cmdlst[1])
        else:
            pass
    
    print(money)
    print('end')
    
    
    1. 机器人从原点(0,0)开始在平面中移动。 机器人可以通过给定的步骤向上,向下,向左和向右移动。 机器人运动的痕迹如下所示:
      UP 5
      DOWN 3
      LETF 3
      RIGHT 2
      方向之后的数字是步骤。 请编写一个程序来计算一系列运动和原点之后距当前位置的距离。如果距离是浮点数,则只打印最接近的整数。
      例:如果给出以下元组作为程序的输入:
      UP 5
      DOWN 3
      LETF 3
      RIGHT 2
      然后,程序的输出应该是:2
    import math
    
    init_pos = [0, 0]
    while True:
        cmd = input('请输入命令:')
    
        if not cmd:
            break
    
        cmdlst = cmd.split(' ')
        if cmdlst[0] == 'U':
            init_pos[1] += int(cmdlst[1])
        elif cmdlst[0] == 'D':
            init_pos[1] -= int(cmdlst[1])
        elif cmdlst[0] == 'L':
            init_pos[0] -= int(cmdlst[1])
        elif cmdlst[0] == 'R':
            init_pos[0] += int(cmdlst[1])
        else:
            pass
    
    
    distance = int(round(math.sqrt(init_pos[0]*init_pos[0] + init_pos[1]*init_pos[1])))
    
    print(distance)
    
    1. 龟兔赛跑
      (模拟龟兔赛跑)本练习中要模拟龟兔赛跑的寓言故事。用随机数产生器建立模拟龟兔赛跑的程序。 对手从70个方格的第1格开始起跑,每格表示跑道上的一个可能位置,终点线在第70格处。 第一个到达终点的选手奖励一个新鲜萝卜和莴苣。兔子要在山坡上睡一觉,因此可能失去冠军。 有一个每秒钟滴答一次的钟,程序应按下列规则调整动物的位置:
    image.png

    用变量跟踪动物的位置(即位置号1到70)。每个动物从位置1开始,如果动物跌到第1格以外,则移回第1格。 产生随机整数1≤i≤10),以得到上表中的百分比。对于乌龟,1≤i≤5时快走,6≤i≤7时跌跤,8≤i≤10时慢走,兔子也用相似的方法。 起跑时,打印: BANG !!!!! AND THEY' RE OFF !!!!! 时钟每次滴答一下(即每个重复循环),打印第70格位置的一条线,显示乌龟的位置T和兔子的位置H。 如果两者占用一格,则乌龟会咬兔子,程序从该位置开始打印 OUCH!!!。除T、H和OUCH!!!以外的其他打印位置都是空的。 打印每一行之后,测试某个动物是否超过了第70格,如果是,则打印获胜者,停止模拟。 如果乌龟赢,则打印TORTOISE WINS!!!YAY!!!。如果兔子赢,则打印Hare wins.Yush。 如果两个动物同时赢,则可以同情弱者,让乌龟赢,或者打印It's a tie。如果两者都没有赢,则再次循环,模拟下一个时钟滴答。 准备运行程序时,让一组拉拉队看比赛,你会发现观众有多么投入。

    import time
    from random import randint
    
    print('begin')
    
    hPos = 0
    tPos = 0
    
    while True:
        paodao = '_' * 70
        num = randint(1,10)
    
        if 1<=num<=5:
            tPos+=3
        elif 6<=num<=7:
            tPos-=6
        else:
            tPos+=1
    
        if num<=2:
            hPos=hPos
        elif 3<=num<=4:
            hPos+=9
        elif num==5:
            hPos-=12
        elif 6<=num<=8:
            hPos+=1
        else:
            hPos-=2
    
    
        if tPos < 0:
            tPos = 0
        if hPos < 0:
            hPos = 0
    
        if tPos > 70 or hPos > 70:
            break
    
        if tPos == hPos:
            # yao
            paodao = paodao[:tPos] + '咬' + paodao[tPos+1:]
        else:
            paodao = paodao[:tPos] + '龟' + paodao[tPos + 1:]
            paodao = paodao[:hPos] + '兔' + paodao[hPos + 1:]
    
        print(paodao)
        time.sleep(0.3)
    
    
    if tPos > 70:
        print('龟赢')
    else:
        print('兔赢')
    
    1. 猜单词游戏
      需求
      给定单词数组(不少于10个),程序随机选择其中的一个,并显示单词字符长度个横线(-),用户有5次猜测机会,用户每次猜一个字母,如果正确,则将在相应的位置上显示出来;如错误则猜测机会减一,重复该过程,直至单词的全部字母全部猜出或者猜测次数用完,最后宣布用户胜利或失败。
      实例
      例如随机选出的单词是apple,程序先打印- - - - - 用户输入p,程序打印 -pp-- 用户输入e,程序打印 -pp-e 用户输入t,程序打印 -pp-e 您还有4次机会 用户输入a,程序打印 app-e 用户输入l,程序打印 apple 恭喜您,取得胜利。
    import random
    words = ['program','banana','tiger','policeman','interface']
    #程序出单词(随机)
    
    idx = random.randint(0,len(words)-1)
    word = words[1]
    
    print(word)
    toguess = '-' * len(word)
    
    #显示这个单词给用户(用-标示),-的个数要等于单词的长度
    # print('-' * len(word))
    wordLst = list(toguess)
    print(''.join(wordLst))
    
    guessTime = 5
    #开始猜单词
    while True:
        if '-' not in wordLst:
            break
    
        if guessTime <= 0:
            break
    
        #让用户输入一个要猜的字符
        c = input('请输入要猜的字符:')
    
        if c in word:
            for i,w in enumerate(word):
                if w == c:
                    wordLst[i] = c
        else:
            guessTime -= 1
            print(f'你还剩下{guessTime}次机会')
    
    
        print(''.join(wordLst))
    
    
    if guessTime > 0:
        print('you win')
    else:
        print('you lose')
    

    相关文章

      网友评论

        本文标题:Python正式课第七天

        本文链接:https://www.haomeiwen.com/subject/lciqictx.html