Python - Como reducir este código?

   
Vista:

Como reducir este código?

Publicado por Carolina (9 intervenciones) el 23/06/2015 22:24:38
Hola a todos,

estoy hasta ahora aprendiendo a programar y he decidido empezar con Python. En este momento estoy haciendo un curso en Coursera y nos han dado un ejercicio suplementario. Lo he logrado hacer pero quisiera saber si hay manera de hacer que el código quede mucho mas corto, porque me parece que así como lo hice no esta mal pero puede quedar mucho mejor. Les agradezco sus respuestas :)

Write a program to prompt for a score between 0.0 and 1.0. If the score is out of range, print an error. If the score is between 0.0 and 1.0, print a grade using the following table:
Score Grade
>= 0.9 A
>= 0.8 B
>= 0.7 C
>= 0.6 D
< 0.6 F
If the user enters a value out of range, print a suitable error message and exit. For the test, enter a score of 0.85.

Solucion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
score = input("tell me your score: ")
scr = float(score)
if scr > 1.0:
    print("Error")
elif scr >= 0.9:
	print ("A")
elif scr >= 0.8:
	print ("B")
elif scr >= 0.7:
	print ("C")
elif scr >= 0.6:
	print ("D")
elif scr < 0.6:
	print ("F")
else:
	print ("Error")

Saludos.

C.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Como reducir este código?

Publicado por xve (1232 intervenciones) el 24/06/2015 14:29:51
Hola Carolina, podrías hacerlo utilizando un diccionario con los valores, pero por la cantidad de valores, de la manera que lo has hecho creo que esta bien, no me complicaría... aquí te he preparado un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
score = input("tell me your score: ")
scr = float(score)
 
myDic={0.9:"A", 0.8:"B", 0.7:"C", 0.6:"D"}
 
if scr > 1.0 or scr < 0:
	print ("Error")
else:
	if scr in myDic:
		print (myDic[scr])
	else:
		print ("F")

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Como reducir este código?

Publicado por Carolina (9 intervenciones) el 24/06/2015 21:15:50
Oye, pues muchas gracias aun no he aprendido a usar diccionarios pero con tu respuesta ya me doy una idea de como funciona!! Muchas gracias :)

Saludos.

C.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como reducir este código?

Publicado por Carolina (9 intervenciones) el 14/09/2015 16:43:04
Hola,

decidí hacer del código una función de esta manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
try:
    scr = float(input("Tell me your score: "))
except:
    print("Not a number! - Insert a number!")
    pass
 
def computegrade (scr):
    if scr > 1.0:
        print ("Error")
    elif scr >= 0.9:
        return ("A")
    elif scr >= 0.8:
        return ("B")
    elif scr >= 0.7:
        return ("C")
    elif scr >= 0.6:
        return ("D")
    elif scr < 0.6:
        return ("F")
    else:
        print ("Error")

El codigo funciona perfecto, excepto cuando no introduzco un numero sino p.ej. una palabra. En ese caso me aparece el sgte error:

1
2
3
4
5
6
7
8
Tell me your score: coucou
Traceback (most recent call last):
  File "/Users/MissOgra/PycharmProjects/Newbie/LetsPlay", line 37, in <module>
    x = print(computegrade(scr))
NameError: name 'scr' is not defined
Not a number! - Insert a number!
 
Process finished with exit code 1

Alguien podría explicarme que esta pasando? Se los agradecería mucho.

Saludos.

C.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar