实验二:Python运算符、内置函数和列表、元组的基本用法(2)
1、实验目的
1)熟练应用Python运算符和内置函数;
2)养成对用户输入立即进行类型转换的习惯;
3)了解列表、元组的概念和基本用法
2、实验环境
Python3.8
3、实验内容
1)编写程序,输入一个包含若干整数的列表,输出新列表,要求新列表中所有元素为
原列表的降序排列,使用sorted()函数。
>>> x=[2,5,6,9,7,78,39,156]
>>> sorted(x,reverse=True)
[156, 78, 39, 9, 7, 6, 5, 2]
sorted()函数格式:
sorted(iterable, cmp=None, key=None, reverse=False)
iterable:是可迭代类型;
cmp:用于比较的函数,比较什么由key决定;
key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值(默认为升序)。
返回值:是一个经过排序的可迭代类型,与iterable一样。
参数说明:
(1) cmp参数
cmp接受一个函数,拿整形举例,形式为:
def f(a,b):
return a-b
如果排序的元素是其他类型的,如果a逻辑小于b,函数返回负数; a逻辑等于b,函数返回0; a逻辑大于b,函数返回正数就行了
(2) key参数
key也是接受一个函数,不同的是,这个函数只接受一个元素,形式如下
def f(a):
return len(a)
key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序
(3) reverse参数
接受False 或者True 表示是否逆序
(摘抄自https://www.cnblogs.com/sysu-blackbear/p/3283993.html)
另外详见可转载
2)编写程序,输入一个包含若干整数的列表,输出新列表,要求输出列表中所有整数
连乘的结果。
>>> x=[1,96,9,3,9,89]
>>> from functools import reduce
>>> n=reduce(lambda x,y:x*y,x)
>>> print(n)
2076192
reduce()函数详见转载
lambda ()匿名函数详见转载
3)编写程序,输入两个各包含两个整数的列表,分别表示城市中两个地点的坐标,输
出两点间的曼哈顿距离。
曼哈顿距离百度百科
x=eval(input("请输入第一个坐标:"))
y=eval(input("请输入第二个坐标:"))
def ManhadunDistance(x,y):
return sum(map(lambda i,j:abs(i-j),x,y))
print("两点间的曼哈顿距离为:",ManhadunDistance(x,y))
(代码摘抄自Python书上)
4)编写程序,输入等比数列的首项和公比(不等于1且小于36的正整数)和自然数n,
输出这个等比数列前n项的和。要求用内置函数int()。
a1=int(input("请输入首项(不等于1且小于36的正整数)a1="))
q=int(input("请输入公比(不等于1且小于36的正整数)q="))
n=int(input("请输入项数n="))
s=int((a1*(1-q**n))/(1-q))
print("前%d项和为:"%n,s)
5)设计一个程序,使用户输入摄氏度,能输出华氏度;反之,输入华氏度,能输出摄
氏度。例如:输入“-30C”,输出“-22.00F”;输入“82F”,输出“27.78C”
#华氏度和摄氏度对应公式:F=32+1.8*C
temp=input("请输入一个温度(摄氏度C/华氏度F):")
if temp[-1]in['F','f']:
#['F', 'f'] 列表类型,表示实际两个元素F和f
#用temp[-1]表示获取temp这样一个变量字符串的倒数第一个字符
C=(eval(temp[0:-1])-32)/1.8
#temp[0:-1]表示从0开始但不到字符串的最后一个字符的字符子串
print("对应的摄氏度为:{:.2f}C".format(C))
elif temp[-1]in['C','c']:
F=1.8*eval(temp[0:-1])+32
print("对应的华氏度为:{:.2f}F".format(F))
else:
print("输入格式有误")
#使用保留字if elif else 构成条件判断的分支结构,注意“:”是语法的一部分
知识点:
变量[0:-1] 表示返回此变量字符串从0开始但不到-1的字符段。相当于去掉末尾输出;
变量[1:] 相当于去掉第一个字符输出;
format()函数的基本用法是:
{} 和 : 来代替以前的 %。可以接受不限个参数,位置可以不按顺序。
eg:
a="{} {}".format{“hello”,“world”}
print(a)
输出的则为 hello world
%.af表示输出保留小数点后a位,并且考虑四舍五入(f指的是浮点型)
eval() 函数用来执行一个字符串表达式,并返回表达式的值。