def grades(*args):
# this checks for invalid grades
invalid = [str(y) for y in args if not (0 <= y <= 100)]
if invalid:
raise ValueError('invalid grades entered: ' + ', '.join(invalid))
# puts passing grades in a list
passing = [x for x in args if x >= 50]
# return 0.0 if no passing grades are found; else average out the rest
return 0.0 if not passing else sum(passing)/len(passing)
print(grades(10, 30)) # 0.0
print(grades(60, 30)) # 60.0
print(grades(60, 80)) # 70.0
print(grades(70, 80, 90)) # 80.0
print(grades(100, 120)) # raises error
ZGVmIGdyYWRlcygqYXJncyk6CgoJIyB0aGlzIGNoZWNrcyBmb3IgaW52YWxpZCBncmFkZXMKCWludmFsaWQgPSBbc3RyKHkpIGZvciB5IGluIGFyZ3MgaWYgbm90ICgwIDw9IHkgPD0gMTAwKV0KCWlmIGludmFsaWQ6CgkJcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBncmFkZXMgZW50ZXJlZDogJyArICcsICcuam9pbihpbnZhbGlkKSkKCgkjIHB1dHMgcGFzc2luZyBncmFkZXMgaW4gYSBsaXN0CglwYXNzaW5nID0gW3ggZm9yIHggaW4gYXJncyBpZiB4ID49IDUwXQoJCgkjIHJldHVybiAwLjAgaWYgbm8gcGFzc2luZyBncmFkZXMgYXJlIGZvdW5kOyBlbHNlIGF2ZXJhZ2Ugb3V0IHRoZSByZXN0CglyZXR1cm4gMC4wIGlmIG5vdCBwYXNzaW5nIGVsc2Ugc3VtKHBhc3NpbmcpL2xlbihwYXNzaW5nKQoJCnByaW50KGdyYWRlcygxMCwgMzApKSAjIDAuMApwcmludChncmFkZXMoNjAsIDMwKSkgIyA2MC4wCnByaW50KGdyYWRlcyg2MCwgODApKSAjIDcwLjAKcHJpbnQoZ3JhZGVzKDcwLCA4MCwgOTApKSAjIDgwLjAKCnByaW50KGdyYWRlcygxMDAsIDEyMCkpICMgcmFpc2VzIGVycm9y