python实验报告02 序列结构用法 ~附带注释

1.编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个数降序排列,并输出结果。
下面展示一些 内联代码片

import random
print('操作前:')
date = [random.randrange(100) for i in range(20)]  # 在0~99中随机选取20个数
print(date)  # 输出随机数
print('操作后:')
date[:10] = sorted(date[:10])  # 将data中前十个数字升序
date[10:] = sorted(date[10:], reverse=True)  # 将date中后十个数字先升序后反转达到降序效果
print(date)  # 输出操作后的随机数

2.编写程序,让用户在键盘上输入一个包含若干整数的列表,输出翻转后的列表。
下面展示一些 内联代码片

代码一:
liebiao = eval(input('请输入一个包含若干整数的列表:'))
print('翻转后列表为:')
print(list(reversed(liebiao)))

下面展示一些 内联代码片

代码二:
lst = eval(input('请输入一个包含若干整数的列表:'))  # 输入一个列表
lst.reverse()  # 将列表中的数反转
print(lst)  # 输出反转后的列表

3.编写程序,使用列表实现筛选法求素数:输入一个大于2的自然数,然后输出小于该数字的所有素数组成的列表。
下面展示一些 内联代码片

代码一:
maxNumber = int(input('请输入一个大于2的自然数:'))
lst = list(range(2, maxNumber))
m = int(maxNumber ** 0.5)
for index, value in enumerate(lst):
    if value > m:
        break
    lst[index + 1:] = filter(lambda x: x % value != 0, lst[index + 1:])
print(lst)

下面展示一些 内联代码片

代码二:
shu = int(input("请输入一个大于2的自然数:"))
lst = list()  # 定义一个列表
for j in range(2, shu):  # 输入数字范围
    count = 0 # 计数器初始为零
    for i in range(1, j + 1):  # 这里范围是从1到该数本身
        if j % i == 0:  # 如果只有1和本身能除尽则为素数
            count += 1
    if count == 2:  # 如果只有2个因数就是素数,否则不是
        lst.append(j)#加入列表
print(lst)

4.已知列表data中有若干字符串,要求编写程序,对data中的字符串进行过滤,只输出重复字符不超过一半的字符串。
下面展示一些 内联代码片

data = ['fsgbd', 'aaabbb', 'chongfu','jjjjj']
print(list(filter(lambda s: len(set(s)) / len(s) > 0.5, data)))  # 集合中不会出现相同的元素,
# len(set(s))是字符串中不相同元素的个数,len(s)是字符串的长度,len(set(s)) / len(s) > 0.5, data)等价于
# (len(s)-len(set(s))/len(s)<=0.5,即为只输出重复字符不超过一半的字符串

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加油吧!~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值