当前位置:   article > 正文

【Python】 一些练习题_python6.1字典练习题,小明一共有2000元钱,买了两斤辣椒

python6.1字典练习题,小明一共有2000元钱,买了两斤辣椒

1. 第一个元素是数据标识,第二个元素的数值必须大于等于50才返回,不够59往后累加,加到最后如果不够50也直接返回,因为没有可加的数据了。

例子1:
a = [[1,3],[2,51],[3,49],[4,42],[5,42]] # 入参
a1 = [[2,54],[4,91],[5,42]] # 返回
例子2:
b = [[1,50],[2,5],[3,10],[4,42],[5,42],[6,10]] # 入参
b1 = [[1,50],[4,57],[6,52]] # 返回

def data(list):
    sum_ = 0
    new_l = []
    for k, v in list:
        sum_ += v
        if sum_ >= 50:
            new_l.append([k,sum_])
            sum_ = 0
        # 说明该元素是数组的最后一个,那么没满50也要输出
        elif k == len(list):
            new_l.append([k,sum_])
    return new_l
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
2. 通过字典推导式,将下面的字符串转换成字典类型的数据

cookie_str=‘PHPSESSID=et4a33og7nbftv60j3v9m86cro; Hm_lvt_51e3cc975b346e7705d8c255164036b3=1561553685; Hm_lpvt_51e3cc975b346e7705d8c255164036b3=1561553685’

new_d = {i.split('=')[0]:i.split('=')[1] for i in cookie_str.split(';')}
print(new_d)
  • 1
  • 2
3. 一个球从100米高度自由落下,每次落地后反跳回原高度的一半在落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
# 一个球从100米高度自由落下,每次落地后反跳回原高度的一半在落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
# 第一次落地,球的路径长度为 100 米
# 第二次落地,球首先反弹了 100/2 米, 然后又下落了 100/2 米,即反弹高度的2倍。
# 第三次落地,球先反弹了 上一次反弹高度/2 米,然后又下落了 上一次反弹高度/2 米,也是反弹高度的2倍
# 那么我们可以先将每次的反弹高度利用函数算出,经过的路径可以依据此函数算出

# 求第n次落地的反弹高度
def h(n):
    if n == 1:
        return 100/2
    else:
        return h(n-1)/2

# 求第n次落地经过的路径长度
def l(n):
    if n == 1:
        return 100
    else:
        return l(n-1) + h(n-1) * 2

print('第10次落地的反弹高度为:%s' %h(10))
print('第10次落地所经过的路径长度为:%s' %l(10))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

结果:

第10次落地的反弹高度为:0.09765625
第10次落地所经过的路径长度为:299.609375
  • 1
  • 2
4. 有一对兔子,第三个月其每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子(意味着生长期为2个月),假如兔子都不死,问每个月的兔子总数为多少?
# 第一个月兔子数   2
# 第二个月兔子数   2
# 第三个月兔子数   4
# 第四个月兔子数   6
# 第五个月兔子数   10
# 第六个月兔子数   16
# 从上述数值可以看出,其实这是一个斐波拉切数列,即每次的值都为前两次值之和。
def fib(n):
    if (n == 1) | (n == 2):
        return 2
    else:
        return fib(n - 1) + fib(n - 2)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
5. 小明有100元钱,打算买100本书,A类书书籍5元一本,B类书籍3元一本,C类书籍1元两本,请用程序算出小明一共有多少种买法?
# 这道题可以直接使用循环算出,A类最多买20本,B类最多买33本,c类则应该为 100-a-b
count = 0
for a in range(21):
    for b in range(33):
        c = 100 - a - b
        if 5 * a + 3 * b + 0.5 * c <= 100:
            count += 1
print("一共有{}种买法".format(count))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
6. 通过代码实现一个注册的流程,基本要求:

1、运行程序,提示用户,输入用户名,输入密码,再次确认密码。
2、判读用户名有没有被注册过,如果用户名被注册过了,那么打印结果该用户名已经被注册。
3、用户名没有被注册过,则判断两次输入的密码是否一致,一致的话则注册成功,否则给出对应的提示。
4、下面是已注册的两个账户,注册成功的账号密码按下面的形式保存到列表users中

提示:要有for-else语句才能实现

users = [{"user":"py27","pwd":"lemonban"},{"user":"py28","pwd":"lemonban2"}]

flag = True
while flag:
    name = input('请输入您的用户名')
    for dic in users:
        if name == dic['user']:
            print('该用户名已经被注册')
            break
    else:
        pwd = input('请输入您的密码')
        repwd = input('请再次输入您的密码')
        if pwd == repwd:
            print('您的账户注册成功')
            flag = False
            newuser = {"user": name, "pwd": pwd}
            users.append(newuser)
        else:
            print('两次输入的密码不一致')
print(users)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
7. 实现剪刀石头布游戏(),提示用户输入要出的拳 :石头(1)/剪刀(2)/布(3)/退出(4) 电脑随机出拳比较胜负,显示 用户胜、负还是平局。

思路:
用户 出1 电脑出 2 ,用户胜
用户 出2 电脑出 3 ,用户胜
用户 出3 电脑出 1 ,用户胜

import random

print('-------石头剪刀布游戏开始-----')
try:
    li = ['石头', '剪刀', '布']
    while True:
        n = int(input('''请按下面提示出拳:
石头【1】  剪刀【2】  布【3】  退出游戏【4】
请输入您的选项:
    '''))
        if n in [1, 2, 3]:
            computer = random.randint(1, 3)
            if computer == n:
                print(F'您的出拳为:{li[int(n) - 1]},电脑出拳为:{li[int(computer) - 1]},平局')
            elif (computer - n == 1) or (computer - n == -2):
                print(F'您的出拳为:{li[int(n) - 1]},电脑出拳为:{li[int(computer) - 1]},您胜利了')
            else:
                print(F'您的出拳为:{li[int(n) - 1]},电脑出拳为:{li[int(computer) - 1]},您输了')
        elif n == 4:
            print('游戏结束')
            break
        else:
            print('请输入1-4之间的数字: ', end='')
except Exception as e:
    print('请输入1-4之间的数字')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

最后总结一下:
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:593462778,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/214798
推荐阅读
相关标签
  

闽ICP备14008679号