一道Python题。希望能帮忙解答
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道Python题。希望能帮忙解答相关的知识,希望对你有一定的参考价值。
2.(需要用到列表)编写程序,通过键盘读取5个以上学生的成绩列表(0-100之间),其中输入的最后一个成绩是你的学号后3位模除100,然后按照下面的方案对每个成绩进行分级:
成绩>=所有成绩的最高分-10,等级为“A”
成绩>=所有成绩的最高分-20,等级为“B”
成绩>=所有成绩的最高分-30,等级为“C”
成绩>=所有成绩的最高分-40,等级为“D”
成绩<所有成绩的最高分-40,等级为“F”
运行参考结果如下图:
请输入至少5个学生的成绩(用空格分隔): 84 95 72 64 32
百分制成绩为84, 等级为: B
百分制成绩为95, 等级为: A
百分制成绩为72, 等级为: c
百分制成绩为64, 等级为: D
百分制成绩为32, 等级为: F
给你来个充分利用列表特性的,代码如下:
HCORE = 100
def locate(v):
rank = [['A', 10], ['B', 20], ['C', 30], ['D', 40], ['F', 100]]
for i in rank:
if HCORE - int(v) <= i[1]:
return i[0]
grades = []
text = input('请输入至少5个学生的成绩(用空格分隔):')
grades = text.split(' ')
for i in grades: print('百分制成绩为0, 等级为:1'.format(i, locate(i)))
输出:
for i in range(5):
try:
a='请输入0-100的成绩' if i==0 else '继续输入'
b=float(input(a))
lst.append(b)
except:
print('只能输入实数')
highest=max(lst)
print(highest)
print(lst)
for i in lst:#最重要的是这个
if i >= highest - 10:
print('A')
elif i>=highest-20:
print('B')
elif i>=highest-30:
print('C')
elif i>=highest-40:
print('D')
elif i<highest-50:
print('E')
有什么看不明白的可以问哦 参考技术B 其中输入的最后一个成绩是你的学号后3位模除100???追问
这是这样要求的。不过具体写的话可以随便输入数字……☺️
一道有趣的面试题
最近考虑跳槽,所以就去参加面试,其中面到一家金融科技公司,考题让我异常深刻,因为全程被虐。但是,可能因为我对原生js的了解多多少少还是知道些的,至少能知道面试题考察的是哪些知识点,也多亏面试官是一个特别自信同时又谦虚的人,他耐心解答我的疑问并且引导我去思考,因此侥幸通过了面试。
现在我将这个题目分享出来供大家思考,非常的有趣!!
function Foo() {
print = function () {
console.log(1)
}
return this
}
Foo.print = function() {
console.log(2)
}
Foo.prototype.print = function() {
console.log(3)
}
var print = function() {
console.log(4)
}
function print() {
console.log(5)
}
Foo.print()
print()
Foo().print()
print()
new Foo.print()
new Foo().print()
请写出以上代码输出结果,并将分析结果表达出来?
首先我们分析一下调用过程
1、Foo.print()
这里是调用了Foo这个对象的print函数,考察的知识点是js里面一切都是对象,构造函数定义后,为Foo对象添加了一个print函数,所以输出为2
2、print()
这里考察了变量提升和函数提升
var print = function() {
console.log(4)
}
function print() {
console.log(5)
}
这两段代码首先会将变量声明和函数的声明提升到作用域的顶部,就是将 var print = undefined 提升到顶部,但是赋值表达式还是在书写的位置,第二个函数只是声明了并没有赋值,所以结果输出为4
3、Foo().print()
这里可以看作两步,先执行构造函数(构造函数当作普通函数执行),执行后返回一个this,这里的this指向的是window对象。我们来看看Foo函数里面的代码
function Foo() {
print = function () {
console.log(1)
}
return this
}
一开始我就注意到里面的print没有使用var来定义,后来面试官和我说只是一个考点,主要考作用域链。当执行这个函数的时候,在函数内部如果没有找到print变量,会去查找父级作用域,因此执行Foo()函数后,print函数就重新赋值了,因此这里输出1
这里其实还有一个考点就是关于this指向的问题,大家可以去了解一下。
4、print()执行到这里,print函数已经更新了,所以也是输出1
5、new Foo.print()
这一步其实也是直接调用了Foo的属性函数print,所以输出2
6、最后一个考点是原型链的知识
先new一个构造函数生成实例,然后去调用实例对象上的print函数,发现实例对象上没有该函数,就会去实例原型上去查找该函数,因此这里输出3
以上是关于一道Python题。希望能帮忙解答的主要内容,如果未能解决你的问题,请参考以下文章