Wpis z mikrobloga

#nowy

#python

#coursera

Zapisałem się na "Programming for Everybody" już jakiś czas temu i teraz nadrabiam zaległości bo już 8 tydzień a ja dziś robię dopiero 3.

Mam takie zadanie :

3.3 Write a program to prompt the user for a score using rawinput. Print out a letter grade based on 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.

Napisałem takie coś xD

score = raw_input("Enter number:")

s = float(score)

if s > 1.0 :

print 'Out of range, range is from 0.0 to 1.0'

elif s >= 0.9 :

print 'A'

elif s >= 0.8 :

print 'B'

elif s >= 0.7 :

print 'C'

elif s >= 0.6 :

print 'D'

elif s < 0.6 :

print 'F'

elif s < 0 :

print 'Out of range, range is from 0.0 to 1.0'

else :

print 'Error, please enter a numeric value'

dla wartości większych niż 1 działa dobrze, ale dla np. -1 zwraca F. Autograder zaliczył to jako dobrze wykonane, jednak chciałbym wiedzieć co jest nie tak. Chciałbym też aby wpisanie nie numerycznej wartości zwracało 'else' bo wywala traceback.

( ͡° ʖ̯ ͡°)

#noob
  • 13
@kirukisu: Zasadniczo działa dobrze bo liczba -1 jest mniejsza zarówno od 0.6 i od 0. Przy warunku z 0.6 powinien być drugi warunek, że liczba jest większa od zera.


@a231: nie, najpierw powinno się sprawdzać czy w ogóle mieści się w dopuszczalnym zakresie. Jeżeli od samego początku wiadomo, że nie, wtedy nie ma sensu lecieć przez resztę warunków.
@kirukisu: W praktyce jeśli nie chcesz za bardzo modyfikować kodu możesz spokojnie te dwa warunki:

elif s < 0.6 :

print 'F'

elif s < 0 :

print 'Out of range, range is from 0.0 to 1.0'

zamienić kolejnością ;-)