Python实验练习题

本文介绍了Python编程中的一些基本操作,包括生成包含随机整数的列表并对其进行特殊排序,计算集合的交集、并集和差集,解决阿凡提与国王的棋盘米粒问题,以及处理列表切片和删除重复元素的方法。此外,还展示了如何根据随机索引组合列表元素生成句子,以及如何对包含随机整数的列表和元组进行部分排序。这些示例涵盖了Python的基础语法和数据结构操作。
摘要由CSDN通过智能技术生成

1.编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。

import random
a = (random.sample(range(1,100),20))
print(a)
b = a[::2]
print(b)
b.sort(reverse=True)
a[::2] = b
print(a)

此处使用切片,每个两个数字把所有偶数取出,放入b中进行排序,然后再重新放入a中,以实现对随机列表中的偶数排序。

2.编写程序,输入两个集合 setA 和 setB,分别输出它们的交集、并集和差集 setA-setB。

setA = ({1,3,5,7,9,11,13,15,6,4,10})
setB = ({2,4,6,8,10,12,14,16,18,3})
print(setA&setB)
print(setA|setB)
print(setA-setB)

&:交集 (即同时满足两个集合的元素)   

|:并集(即至少满足两集合其中一个的元素)

-:差集(即两个集合中不一样的元素)

3.阿凡提与国王比赛下棋,国王说要是自己输了的话阿凡提想要什么他都可以拿得出来。阿凡提说那就要点米吧,棋盘一共64个小格子,在第一个格子里放1粒米,第二个格子里放2粒米,第三个格子里放4粒米,第四个格子里放8粒米,以此类推,后面每个格子里的米都是前一个格子里的2倍,一直把64个格子都放满。需要多少粒米呢?

i = 1
j = 1
sum = 0
while j < 64:
    i = i*2
    j = j+1
    sum = sum+i
print(sum)
每格较前一次加倍,然后把所有格子中的米求和即可

4、编写程序,用户输入一个列表和2个整数作为下标,然后输出列表中介于2个下标之间的元素组成的子列表。例如用户输入[1,2,3,4,5,6]和2,5,程序输出[3,4,5]。

a = (input().split(','))
m = int(input())
n = int(input())
b = (a[m:n])
c = [int(i) for i in b]
print(c)

键盘取两个整数,再从列表中取出即可

5.编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的集合。

def prime(n):
    for i in range(2,n):
        if n % i == 0:
            return False
        else:
            return True
num = eval(input())
result = list()
for m in range(2,num):
    if prime(m)==True:
        result.append(m)
print(result)

使用prime () 来判断是否是素数,使用for循环来逐个判断从2到目标数字的所有数字。若为素数则存入result中。

6.设计一个字典,并编写程序,用户输入内容作为键,然后输出字典中对应的值,如果用户输入的键不存在,则输出“您输入的键不存在!”。

a = {1:'a',2:'b',3:'c',4:'d',5:'e',6:'f',7:'g'}
print("字典为{1:'a',2:'b',3:'c',4:'d',5:'e',6:'f',7:'g'}")
b = int(input('请输入对应按键 :'))
c = a.get(b,0)
if c == 0:
    print('输入的键不存在')
else :
    print('字典中%d对应值是%s'%(b,c))

7.假设有三个列表:lst_who=[“小马”,“小羊”,“小鹿”],lst_where=[“草地上”,“电影院”,“家里”],lst_what=[“看电影”,“听故事”,“吃晚饭”]。试编写程序,随机生成三个0-2范围内的整数,将其作为索引分别访问三个列表中的对应元素,然后进行造句。例如,随机生成三个整数分别为1,0,2,则输出句子“小羊在草地上吃晚饭”。

import random
lst_who = ["小马","小羊","小鹿"]
lst_where = ["草地上","电影院","家里"]
lst_what = ["看电影","听故事","吃完饭"]
x = random in range(3)
y = random in range(3)
z = random in range(3)
n = lst_who[x] + lst_where[y] + lst_what[z]
print(n)

分别生成三个随机数,然后用这三个随机数组合对应的语句块,以达到随机生成一句话的效果。

8.编写程序,生成一个包含20个两位随机整数的列表,将其前十个元素升序排列,后十个元素降序排列。

import random
a = [random.randint(10,100) for i in range(20)]
b = a[0:10]
b.sort()
a[0:10] = b
c = a[10:20]
c.sort()
c.reverse()
a[10:20] = c
print(a)

取出列表中的前十位数,放进另一个列表,对其排序,然后再放回源列表。后十位数同理。

9.生成包含 20 个随机整数的元组,将前十个数按升序排列,后十个数按降序排列。

import random

a = (random.randint(1,1000) for i in range(20))
a = list(a)
b = a[0:10]
b.sort()
a[0:10] = b
c = a[10:20]
c.sort()
c.reverse()
a[10:20] = c
a = tuple(a)
print(a)

先把元组转换为列表,按上题同样的方法操作,最后把列表转换回元组即可。

10.编写程序,删除list里面的重复元素。

a = [1,2,3,4,5,6,7,8,9,0,2,3,4,6,7,8,9]
print(a)
c = list(b)
print(b)

使用list可以自动清除重复元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值