Python列表练习【第六周】

Python列表练习

一、小球弹了多少次

在这里插入图片描述

n, m = eval(input())
height = n
count = 0
distance = height
# 如果弹起来的高度(弹之前/2) 大于 最小弹起高度:则弹
t = 0.0
while height / 2 > 0.01:
    # 弹
    height /= 2
    count += 1

    #print("第%d次弹起来的高度是%f." % (count, height))

    distance += height * 2 # 累加起、落距离
    if count == m:
        t = distance-height
    #print("第%d次弹起来的高度是%f." % (count, distance))
print("小球全程弹起{:d}次,移动了{:.2f}米。反弹第{:d}次时,移动了{:.2f}米。".format(count,distance,m,t))

二、列表元素绝对值排列

在这里插入图片描述


def dx(x):
    return abs(x)

a = input().split(" ")
s1 = [int(a[i]) for i in range(len(a))]
s1.sort(key=dx)
print(s1)



三、列表合并去重

在这里插入图片描述

a = input().split(" ")
b = input().split(" ")
s1 = [int(i) for i in a]
s2 = [int(i) for i in b]
s1.extend(s2)

s1 = list(set(s1))
print(s1)



四、删除字符串中连续的重复字符

在这里插入图片描述

s = input()
print(s[0],sep="",end="")
for i in range(1,len(s)):
    if s[i]==s[i-1]:
        continue
    else:
        print(s[i],sep="",end="")

五、乘积的列表

在这里插入图片描述



a = input().split(" ")
s1 = []
for i in range(len(a)):
    s1.append(int(a[i]))

s2 = []
d1 = 1
d2 = 1
for i in range(len(s1)):
    if s1[i] == 0:
        d2 = d2*s1[i]
    else:
        d1 = d1*s1[i]

cnt = s1.count(0)
if cnt==1:
    for i in range(len(s1)):
        if s1[i] == 0:
            t = d1
        else:
            t = int(d2/s1[i])
        s2.append(t)
elif cnt>1:
    t = 0
    for i in range(len(s1)):
        s2.append(t)
elif cnt==0:
    for i in range(len(s1)):
        t = int(d1/s1[i])
        s2.append(t)

print(s2)




六、0的组合

在这里插入图片描述

a = sorted(list(map(int,input().split())))
l = len(a)
b = set()
for i in range(l):
    for j in range(i+1,l):
        for k in range(j+1,l):
            if a[i]+a[j]+a[k]==0:
                b.add((a[i],a[j],a[k]))
print(len(b))

七、矩阵翻来覆去的运算

在这里插入图片描述

n=int(input())
a=[]
sum=0
for i in range(n):
    s=input()
    le = len(s)
    a.append([int(n) for n in s.split()])

if le != 2*n-1:
    print("输入错误,请重新输入!")
else:
    for i in range(n):
        for j in range(n):
            if i != n - 1 and j != n - 1 and i + j != n - 1:
                sum += a[i][j]
    print(sum)
n=int(input())
a=[]
sum=0
for i in range(n):
    s = list(map(int, input().split()))
    a.append(s)

if len(a[0]) != n:
    print("输入错误,请重新输入!")
else:
    for i in range(n):
        for j in range(n):
            if i != n - 1 and j != n - 1 and i + j != n - 1:
                sum += a[i][j]
    print(sum)

八、杨辉三角【part one】

在这里插入图片描述


n=eval(input())
r=[]#返回列表
l1=[1]#临时列表1
l2=[1]#临时列表2
for i in range(1, n + 1):  # i为层数,该层的数字数
    l1.append(0)  # 给临时列表的末尾加0防止越界
    l1.insert(0, 0)  # 给临时列表的前端加0防止越界
    l2 = []  # 清空临时列表2
    for j in range(1, i + 1):  # 递推每一个数字
        l2.append(l1[j - 1] + l1[j])  # 递推式,这里j从1开始,所以这么写
    l1 = l2[:]  # 把新的列表(l2)赋值给l1
    r.append(l2)  # 把新的列表(l2)加入返回列表(r)
print(r)


九、和谐列表

在这里插入图片描述

a = input().split(",")
s1 = []
for i in range(len(a)):
    s1.append(int(a[i]))
d={}
for i in s1:
    if i in d:
        d[i] += 1
    else:
        d[i] = 1
res = []
for i in d:
    if i + 1 in d:
        res.append(d[i]+d[i+1])
if not res:
    print(0)
else:
    print(max(res))

十、分糖果

在这里插入图片描述

m, n = map(int,input().split())

res = []
for i in range(n):
    res.append(0)
i = 0
while m > 0:
    res[i % n] += min(i + 1, m)
    m -= i + 1
    i += 1
print(res)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值