====== Computer Lab 04, strings, tuples, lists ====== complex data types: strings, tuples, lists. Traversing. Basic methods. ===== practical work ===== implement the following functions and test them appropriately. ==== strings ==== def count_chars(string, char): """Return the number of occurances of char in string. :param string: a string. Example "hello world" :param char: character. Example "l" :return: int number of char occurences in string >>> count_chars("hello","l") 2 """ def replace_chars(string, char_original, char_replacement): """Return a new string with all occurences of char_original replaced by char_replacement. :param string: string in which some chars shall be replaced :param char_original: character to be replaced :param char_replacement: character to be inserted instead of char_original :return: a new string with replaced characters >>> replace_chars("hello","h","H") 'Hello' """ def reverse_string(string): """Return a reversed version of string. :param string: string to be reversed :return: reversed string >>> reverse_string("hello") 'olleh' """ def is_palindrom(string): """Return True if and only if the string is equal to its reversed version. :param string: string to check for palindrom :return: boolean >>> is_palindrom("aka") True >>> is_palindrom("hello") False """ ==== tuples ==== * immutable * heterogeneous data structure # packing b = ("Bob", 19, "CS") #unpacking (name, age, studies) = b name age studies def circle_chars(radius): """Return a circumference and an area of a circle. :param radius: int radius of a circle. :return: (int, int) tuple containing circumference and area (in this order) >>> circle_chars(3) (18.84955592153876, 28.274333882308138) """ ==== lists ==== # Wentworth (2012) students = [ ("John", ["CompSci", "Physics"]), ("Vusi", ["Maths", "CompSci", "Stats"]), ("Jess", ["CompSci", "Accounting", "Economics", "Management"]), ("Sarah", ["InfSys", "Accounting", "Economics", "CommLaw"]), ("Zuki", ["Sociology", "Economics", "Law", "Stats", "Music"])] # Count how many students are taking CompSci counter = 0 for (name, subjects) in students: if "CompSci" in subjects: counter += 1 print("The number of students taking CompSci is", counter) ===== Weekly Homework 04 ===== Required filename: ''04_weekly_hw.py''. def remove_duplicates(items): """Remove duplicate items. :param items: input list, can contain anything :return: (unique_list, duplicates) unique_list - a list with unique items only duplicates - a list with items that were in items more than once (not unique list) >>> remove_duplicates(['h','e','l','l','o']) (['h', 'e', 'l', 'o'], ['l']) """ ===== homework ===== Solve homework [[courses:be5b33prg:homework:regular:02_quadratic_equation|02 - Quadratic equation solver]] and submit it via Upload system in time! Check the deadline in Upload system. * The homework from last week was to read chapters 6,7,8,9 from [[http://openbookproject.net/thinkcs/python/english3e/|Wentworth2012]]. Go through them once more and concentrate on things you do not understand. * Read chapter 11 (Lists) from [[http://openbookproject.net/thinkcs/python/english3e/|Wentworth2012]].