摘要:本文旨在帮助中国药科大学的学生学习必修课《Python与医药大数据处理》,在实验操作题方面给予代码参考。
欢迎各界人士共同讨论Python相关话题,并给予宝贵建议。
目录
PY60301:输出列表元素的统计结果
要求:从键盘输入一个包含若干整数的列表,在屏幕上实现下列输出:
(1)输出列表中的最大值和最小值;
(2)输出列表元素的平均值,结果保留3位小数;
(3)输出列表元素中绝对值最大的数;
(4)将列表元素降序排列后输出
ls=eval(input("请输入一个包含若干整数的列表:"))
print("最大值是:",max(ls))
print("最小值是:",min(ls))
print("平均值是:{:.4}".format(sum(ls)/len(ls)))
print("绝对值最大的数为:",max(ls,key=abs))
print("降序后的新列表为",sorted(ls,reverse=True))
PY60302:按要求输出列表
要求:从键盘输入一个包含若干自然数的列表,在屏幕上实现下列输出:
(1)把列表中的所有自然数转换为字符串,然后输出包含这些字符串的列表;
(2)输出一个元素为原列表中每个自然数的位数的列表
ls=eval(input("请输入一个包含若干自然数的列表:"))
print(list(map(str,ls)))
print(list(map(len,list(map(str,ls)))))
或者选择
ls=eval(input("请输入一个包含若干自然数的列表:"))
print([str(each) for each in ls])
print([len(str(each)) for each in ls])
PY60303:找出字符串中第一个只出现一次的字符
要求:从键盘输入一个只包含小写字母的字符串,在屏幕上输出第一个只出现一次的字符,如果没有,则在屏幕上输出“No”
s=input("请输入一个字符串(只包含小写字母):")
cnt=[0]*26
for c in s:
for i in range(97,123):
if ord(c)==i:
cnt[i-97]+=1
for j in cnt:
if cnt[j]==1:
print(chr(j+97))
break
else:
print("No")
PY60304:按要求输出英文文本中的最长单词和最短单词
要求:从键盘输入英文文本,其中只包含单词和空格,在屏幕上输出第一个最长单词和第一个最短单词
s=input("请输入一个句子:")
words=s.split()
length=[len(each) for each in words]
print("第一个最长的单词是:"+words[length.index(max(length))])
print("第一个最短的单词是:"+words[length.index(min(length))])
PY60305:实现列表的排序和删除
要求:生成一个包含20个0~100随机整数的列表,降序排列列表中索引号为偶数的元素,索引号为奇数的元素不变,输出排序后的列表,然后删除排序后列表中的所有奇数
import random
x=[]
for i in range(20):
x+=[random.randint(0,100)]
print("生成列表如下:")
print(x)
x[::2]=sorted(x[::2],reverse=True)
print("排序后,列表如下:")
print(x)
for j in x[::-1]:
if j%2==1:
x.remove(j)
print("删除奇数后,列表如下:")
print(x)
或者选择
import random
x=[]
x=[random.randint(0,100) for i in range(20)]
print("生成列表如下:")
print(x)
x[::2]=sorted(x[::2],reverse=True)
print("排序后,列表如下:")
print(x)
x=list(filter(lambda a:a%2==0,x))
print("删除奇数后,列表如下:")
print(x)
PY60306:按要求统计学生的课程成绩
要求:从键盘连续输入课程名称及成绩,课程名称和成绩用空格分隔,每门成绩一行,遇空行按Enter键结束录入。本题要求输入结束后在屏幕上输出得分最高的课程名称及成绩,得分最低的课程名称及成绩,以及平均分(保留2位小数)
data=input("请输入课程名及对应的成绩:")
s=0
ls=[]
while data:
lis=data.split()
ls+=[lis]
data=input("请输入课程名及对应的成绩:")
ls1=[eval(x[1]) for x in ls]
for i in ls1:
s+=i
maxc=max(ls,key=lambda x:x[1])[0]
maxs=max(ls,key=lambda x:x[1])[1]
minc=min(ls,key=lambda x:x[1])[0]
mins=min(ls,key=lambda x:x[1])[1]
print("最高分课程是{}{},最低分课程是{}{},平均分是{:.2f}".format(maxc,maxs,minc,mins,s/len(ls)))
PY60307:按要求输出新药年份及其上市数量
要求:根据Cortellis Drug Discovery Intelligence截至2020年11月18日的检索结果,近20年上市的新药的统计信息用字字符串保存如下:
"2020年,87\n2019年,96\n2018年,99\n2017年,99\n2016年,76\n2015年,87\n2014年,100\n2013年,86\n2012年,63\n2011年,66\n2010年,59\n2009年,81\n2008年,63\n2007年,74\n2006年,81\n2005年,79\n2004年,59"
根据每年上市新药数量从大到小的顺序进行排序,并按照每行一个年份的格式在屏幕上输出年份及其上市新药的数量
s="2020年,87\n2019年,96\n2018年,99\n2017年,99\n2016年,76\n2015年,87\n2014年,100\n2013年,86\n2012年,63\n2011年,66\n2010年,59\n2009年,81\n2008年,63\n2007年,74\n2006年,81\n2005年,79\n2004年,59"
ls=s.split("\n")
print("数据初步切分为如下列表:")
print(ls)
print()
lsls=[x.split(",") for x in ls]
print("数据二次处理为如下列表:")
print(lsls)
print()
lsls.sort(key=lambda x:int(x[1]),reverse=True)
print("最终排序结果为:")
print("\n".join([":".join(i) for i in lsls]))
PY60308:实现字典的反转输出
要求:从键盘输入一个字典类型的字符串,反转其中的键值并在屏幕上输出,即输入key:value模式,输出value:key模式。如果输入的字典格式字符串不正确,则提示“输入错误”
s=input("请输入字典格式字符串:")
try:
d=eval(s)
v=list(d.values())
k=list(d.keys())
new_d=dict(zip(v,k))
print(new_d)
except:
print("输入错误")