jmu-python-分段函数&数学函数
本题要求计算下列分段函数f(x)的值(x为从键盘输入的一个任意实数):
输入格式:
直接输入一个实数x
输出格式:
在一行中按“f(x)=result”的格式输出,其中x与result都保留三位小数。
输入样例:
3.14
输出样例:
f(3.140)=0.865
代码
import math
x=eval(input())
if -1<x<1:
result=(2-2*x)**0.5
elif x>=1:
result=(math.cos(x)+x**2)/(2.5+math.fabs(x+math.log(100)))
elif x<=-1:
result=math.exp(x)
print("f({0:.3f})={1:.3f}".format(x,result))
需要用到的陌生语法
math库里面的部分语法
math.fabs(x) | 返回 x 的绝对值 | |
math.exp(x) | ex | 返回 e 的 x 次幂,e 是自然对数 |
math.cos(x) | cos x | 返回 x 的余弦函数值,x 是弧度值 |
math.log(x)(只写一个参数表示底数为e)
我觉得这个代码是比较简单的完全是根据数学公式来写代码,没有什么更多需要绕的弯子。
列表元素个数的加权和(1)
输入一个嵌套列表,嵌套层次不限,根据层次,求列表元素的加权个数和。第一层每个元素算一个元素,第二层每个元素算2个元素,第三层每个元素算3个元素,第四层每个元素算4个元素,...,以此类推!
输入格式:
在一行中输入一个列表。
输出格式:
在一行中输出加权元素个数值。
输入样例:
在这里给出一组输入。例如:
[1,2,[3,4,[5,6],7],8]
输出样例:
在这里给出相应的输出。例如:
15
代码:
def N(a,b):
sum=0
for i in a:
if i is int:
sum+=1
if i is list:
sum+=N(i,b+1)
return sum
a=eval(input())
b=1
print(sum)
做题的心路历程
看到嵌套列表,其实就能想到递归的方法。定义一个数元素加权和的函数,如果在列表中遇到另一个列表,就可以在这个函数内部在调用一下这个函数,完成递归。
进制转换
输入一个十进制的整数。将它转换为二进制数、八进制数和十六进制数。
输入格式
输入一个不超过100的十进制整数。
输出格式:
在一行内输出对应的二进制数、八进制数和十六进制数,以空格隔开。
输入样例:
在这里给出一组输入。例如:
8
输出样例:
在这里给出相应的输出。例如:
1000 10 8
代码
n=int(input())
c=bin(n)
d=oct(n)
e=hex(n)
c=str(c)
d=str(d)
e=str(e)
print("{} {} {}".format(c[2:],d[2:],e[2:]))
做题需要的陌生语法
关于进制转化的函数:
- dec(十进制)—> bin(二进制)
- dec(十进制)—> oct(八进制)
- dec(十进制)—> hex(十六进制)
做题的心路历程
进制转换最直接的方法就是,通过调用python的内部函数
而我们学习过程中了解到当使用函数进行转换的时候前面是有两个标的,所以我们应当把转换得来的那一串转换为字符串再通过下标输出我们想得到的部分。
7-95 jmu-python-查成绩
从键盘输入一个学生所有课程的成绩,输入格式为”课程名:成绩“,每门课占一行,以空行结束。随后提示”请输入要查询的课程:“,用户从键盘输入课程名,查询并输出该课程的成绩,要求进行异常处理,对不存在的课程进行捕捉处理。
输入格式:
输入学生所有课程的成绩,每门课占一行,格式为”课程名:成绩“,以空行结束
在提示后输入课程名
输出格式:
如果课程存在,直接输出成绩,否则提示”没有该门课程“
输入样例1
数学:96
英语:82
计算机:76
思政:90
计算机
输出样例1:
请输入要查询的课程:
76
输入样例2:
数学:96
英语:82
计算机:76
思政:90
数学a
输出样例2:
请输入要查询的课程:
没有该门课程
代码
list1=[]
while True:
a=input()
if a=='':
break
list1.append(a.split(":"))
d=dict(list1)
b=input('请输入要查询的课程:\n')
try:
print(d[b])
except:
print('没有该门课程')
做题需要的陌生语法
dict()转化为字典,d[b]在d这个字典里查询b这个词对应的分数