Reverse list of last names: Difference between revisions

From Computer Science Wiki
 
(3 intermediate revisions by the same user not shown)
Line 13: Line 13:
== The Problem ==
== The Problem ==


Given a list of first name, last name with only one first name and one last name, process the names so they are in reverse order by last name. YOU WILL NOT BE GIVEN AN ALPHABETICAL LIST!  
You are given a list of names in a list. The list will only have one first name and one last name. You must construct a program to process the names so they are in reverse order by last name. YOU WILL NOT BE GIVEN AN ALPHABETICAL LIST!  


for example:  
for example:  


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
names = "Bill MacKenty", "Joe Shmoe", "Jan Kowalski", "Max Haltre"]
names = ["Bill MacKenty", "Joe Shmoe", "Jan Kowalski", "Max Haltre"]


# the output should be:  
# the output should be:  
Line 63: Line 63:
<syntaxhighlight lang="python" >
<syntaxhighlight lang="python" >


not yet!
# This code is used with consent from Daniel, who gave this to us on 25 September 2019
 
names = ["Bill MacKenty", "Joe Shmoe", "Jan Kowalski", "Max Zaltre"]
 
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 
for name in names:
    first_letter_name = name.split(" ")[1][0]
    first_letter_names = names[0].split(" ")[1][0]
    if(alphabet.index(first_letter_name) > alphabet.index(first_letter_names)):
        current_name = name
        del names[names.index(name)]
        names.insert(0, current_name)
print(names)


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 09:36, 25 September 2019

This a problem set for you to work through [1]

This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are:

  1. to build your skill applying computational thinking to a problem
  2. to assess your knowledge and skills of different programming practices


What is this problem set trying to do[edit]

In this example we are learning about lists, loops, conditionals, and processing user input.

The Problem[edit]

You are given a list of names in a list. The list will only have one first name and one last name. You must construct a program to process the names so they are in reverse order by last name. YOU WILL NOT BE GIVEN AN ALPHABETICAL LIST!

for example:

names = ["Bill MacKenty", "Joe Shmoe", "Jan Kowalski", "Max Haltre"]

# the output should be: 

Joe Shmoe,  Bill MacKenty, Jan Kowalski, Max Haltre

How you will be assessed[edit]

Your solution will be graded using the following axis:


Scope

  • To what extent does your code implement the features required by our specification?
  • To what extent is there evidence of effort?

Correctness

  • To what extent did your code meet specifications?
  • To what extent did your code meet unit tests?
  • To what extent is your code free of bugs?

Design

  • To what extent is your code written well (i.e. clearly, efficiently, elegantly, and/or logically)?
  • To what extent is your code eliminating repetition?
  • To what extent is your code using functions appropriately?

Style

  • To what extent is your code readable?
  • To what extent is your code commented?
  • To what extent are your variables well named?
  • To what extent do you adhere to style guide?

References[edit]

A possible solution[edit]

Click the expand link to see one possible solution, but NOT before you have tried and failed!

# This code is used with consent from Daniel, who gave this to us on 25 September 2019

names = ["Bill MacKenty", "Joe Shmoe", "Jan Kowalski", "Max Zaltre"]

alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

for name in names:
    first_letter_name = name.split(" ")[1][0]
    first_letter_names = names[0].split(" ")[1][0]
    if(alphabet.index(first_letter_name) > alphabet.index(first_letter_names)):
        current_name = name
        del names[names.index(name)]
        names.insert(0, current_name)
print(names)