我正在尝试输入n个学生的分数并找到特定学生的平均分。我正在使用嵌套的字典项,并尝试在一行代码中输入。标记范围从0到100,我需要在链接到字典键之前执行此操作。下面是我的代码,我没有达到范围(0到100)的条件。请帮忙。
let name;
beforeEach(function() {
browser.get('http://localhost:8080/#/');
name = element(by.css("*[id='field_nombre']"));
}
it('Scenario 1', function () {
name.click();
}
答案 0 :(得分:1)
而不是if x in range(0,101)
,您应该使用if x >= 0 and x <= 100
或@mata建议您可以使用if 0 <= x <= 100
。
x in range(0, 101)
仅在True
为整数且介于0和100(含)之间时才返回x
。
答案 1 :(得分:0)
@Mahantesh ,当我从您的代码中阅读并理解时,我试图以我的方式实现您的问题。我采取了与您采取的相同的变量名称。
我还使用
json
模块来打印字典。
请检查以下代码,如果您需要更改,请与我们联系。
不要忘记检查输出。
import json
def get_averages():
student_marks = {};
successful_trials = 0; # IT IS NOT REQUIRED, JUST TO MAKE PROGRAM USER FRIENDLY
while True:
try:
# CREATE A LIST
# ['Rishikesh', '90', '95', '90', '80', '85', '70']
line = input('\n('+ str(successful_trials + 1) + ') ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> ').split();
if len(line) > 0:
# NAME OF STUDENT => 'Rishikesh'
name = line[0];
if name.lower() == 'exit': # IF USER ENTERS ANYTHING STARTING WITH exit (stop iteration)
break
# SCORES OF A STUDENT (INTEGERS) => [90, 95, 90, 80, 85, 70]
scores = [int(number) if (int(number) >= 0 and int(number) <= 100) else -1 for number in line[1:]]
if not scores:
print("\nERROR: INPUT SHOULD HAVE AT LEAST 1 OR MORE SCORES (SPACE SEPARATED)")
continue
else:
print("\nERROR: INPUT SHOULD HAVE NAME FOLLOWED BY AT LEAST 1 OR MORE SCORES (SPACE SEPARATED)")
continue
if -1 not in scores: # SCORES ARE IN RANGE MEANS IT IS NOT LIKE [90, -1, 90, -1, 85, 70]
student_marks[name] = {
"scores": scores,
"average": sum(scores) / len(scores) # AVERAGE
}
else:
print("\nERROR: ENTERED SCORES ARE NOT IN RANGE")
continue
successful_trials += 1; # IF EVERYTHING PASSED
except Exception as error:
print('\nERROR OCCURED: ', error)
print("\nPLEASE ENTER CORRECT VALUE")
continue
return student_marks; # DICTIONARY OF DICTIONARIES
if __name__ == "__main__":
# CALL TO get_averages()
student_marks = get_averages();
# PRETTY PRINTING DICTIONARY USING json MODULE
print(json.dumps(student_marks, indent=4));
(py3.6) H:\RishikeshAgrawani\Projects\Sof\EntrySof>python EntrySof.py
(1) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> student1 56 67 35 45
(2) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> student2 67 45 35 24
(3) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> student3 101 56
ERROR: ENTERED SCORES ARE NOT IN RANGE
(3) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> student3 100 0 90
(4) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> student4 ok new
ERROR OCCURED: invalid literal for int() with base 10: 'ok'
PLEASE ENTER CORRECT VALUE
(4) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> student4 70 40 50 70
(5) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> exit
{
"student1": {
"scores": [
56,
67,
35,
45
],
"average": 50.75
},
"student2": {
"scores": [
67,
45,
35,
24
],
"average": 42.75
},
"student3": {
"scores": [
100,
0,
90
],
"average": 63.333333333333336
},
"student4": {
"scores": [
70,
40,
50,
70
],
"average": 57.5
}
}
(py3.6) H:\RishikeshAgrawani\Projects\Sof\EntrySof>python EntrySof.py
(1) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> hygull 50 60 70
(2) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> gurudev 78 22 50 55 45
(3) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> user1 60 -5 9
ERROR: ENTERED SCORES ARE NOT IN RANGE
(3) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> user2 100 40 kite
ERROR OCCURED: invalid literal for int() with base 10: 'kite'
PLEASE ENTER CORRECT VALUE
(3) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> user3 90 90 100 50
(4) ENTER NAME SEPARATED BY 1 OR MORE SCORES SPACE SEPARATED (TYPE exit TO STOP) >>> exit
{
"hygull": {
"scores": [
50,
60,
70
],
"average": 60.0
},
"gurudev": {
"scores": [
78,
22,
50,
55,
45
],
"average": 50.0
},
"user3": {
"scores": [
90,
90,
100,
50
],
"average": 82.5
}
}
答案 2 :(得分:0)
下面是我的代码,它工作得很好。
if __name__ == '__main__':
n = int(input())
if n in range(2,11):
student_marks = {}
for _ in range(n):
line = raw_input().split()
name = line[0]
scores = line[1:]
scores = list(map(float, scores))
truth,x,y = 0,0,0
y = len(scores)
for x in scores:
if 0<=x<=100:
truth = truth+1
if(truth == y):
student_marks[name] = scores
else:
print("Marks out of range")
query_name = raw_input()
add = 0
m=0
"""for s in student_marks[query_name]:
m = m+1"""
#if x in student_marks:
for x in student_marks:
if x == query_name:
y = len(student_marks[query_name])
for g in (student_marks[query_name]):
add = add + g
average = float(add/y)
print("%.2f" % average)