** Program 1**.

Generate a list containing 50 random integers between 10 to 100. Write a program which removes all the values which are divisible by 3 from the list . Then it subtracts 1 from all the remaining values and then removes all the values divisible by 5 from the list.

*Example with a smaller list of random integers :*

starting list with random integers = [23,34,45,56,17,18,23,10]

after removing all the values divisible by 3 = [23,34,56,17,23,10]

subtracting 1 from each of the value = [22,33,55,16,22,9]

final output after removing values divisible by 5 = [22,33,16,22,9]

Way to create a list with random integers

```
import numpy as np
x=np.random.randint(10,101,50)
```

since these values are being generated randomly , your solution will not match exactly with the solution that anyone else comes up with [in terms of values that you see as outcome]

*Program 2.*

*Consider the following dictionary*

`{'a':'e','b':'$','c':'q','d':'p','j':'n'}`

Write a program which takes input any string and then replaces all the letters which are keys in the above dictionary with their corresponding values in the dictionary.

```
example input = 'abjected'
output = 'e$neqtep'
```

*Program 3**. *

Write a program which takes input a list of strings and removes strings until all the remaining strings are of equal lengths . Assume that in the input list , there will be at-least two strings of the same length . For simplicity , assume that list will not contain equal length strings for multiple lengths.

`example input =['abc','abcd','acbde','acbgeh','qwert'] `

output = ['abcde','qwert']

*Additional Info : =>*

*you can identify for what length you have multiple strings by first creating a list containing lengths of the string and then look at count of the lengths in that list . any value which has count more than 1 , thats your target length. *

*From the input list you can remove all other strings and keep only that string which correspond to that length .*

*=> you can get unique values in a list x by using set(x)*

*=> you can get count of a value , say `y` in list `x` using `x.count(y) `*

*Program 4**. *

Write a function which tells you whether you can take jugs of capacity 3 and 5 litres and fill another jug of capacity x completely with water using just these two . For simplicity assume that you can only pour into the jug of capacity x . You can not take any water out. And you start with jug of capacity x being empty. It is acceptable if you dont use any one of the jugs [of capacity 3 and 5 litres]

Additional Details :

=> function will take argument x , the capacity of the jug to be filled

=> The problem is same as finding if there exist positive integer solutions for a and b in the equation 3a+5b=x where is a known integer

=>one of the strategies to find this out can be as per following example [dont be intimidated by the example, i have given multiple elaborate examples to explain possible scenarios to you ]

=> this does not imply that this is the only possible way to solve this , feel free to use your own ideas if you have one

=> you can check if a number x is integer or not using x==int(x)

*Program 5**. *

Use dictionary comprehension to create a dictionary with keys : t1,t2,t3.......t100 which takes random integers from the range [1,100] as their corresponding values. Write a function which takes this dictionary as input and returns number of unique values from all key:value pairs in that dictionary .

Additional info:

`example input with a smaller dictionary : {'t1':2, 't2':45, 't3':34, 't4':2} `

output = 3

*Program 6**. *

Imagine a circle and two squares: a smaller and a bigger one. For the smaller one, the circle is a circumcircle and for the bigger one, an incircle.

Create a function, that takes an integer (radius of the circle) and returns the difference of the areas of the two squares

*Program 7**.*

A number is said to be Harshad if it's exactly divisible by the sum of its digits. Create a function that determines whether a number is a Harshad or not. Input to the function will be an integer.

*Program 8*

Write a function which takes an integer n as input and returns sum of all even numbers in the first n terms of a fibonacci series .

```
example input = 7
fibonacci series for the same will be : 1,1,2,3,5,8,13
```

output=2+8=10

Additional info : Each term in the fibonacci series is sum of previous two. First two terms of the series are 1 . For simplicity , you can assume that input n will always be greater than 4.

*Program 9*

Write a function which takes input an english sentence of any length , and a set containing some stop words. Function then removes all stop words from the sentence and returns a dictionary where keys are all unique words in the sentence and values are their count in the sentence .

Additional info : For simplicity assume that there will be no punctuations in the input sentence, simply words separated by single white spaces. Assume that all string inputs will be lowercase.

*Program 10*

10. consider this list of addresses

['H-73, MDT, Powai , Mumbai' , '1604, SS, Hyderabad' ,'B block 73, Adyar, Chennai'] Extract cities from each address, use list comprehension .

**Hints : **

Write list comprehension to convert this to list of lists [ use split function on strings]

Extract last element of each of these individual list using index -1, using list comprehension

*Program 11*

11. given a list , create a dictionary with counts of unique elements that it contains input list = ['a','b','a','a','b','c','c','a','b'] output dictionary = {'a':4,'b':3,'c':2}

*Hints :*

iterate over the list using a for loop

for creating an empty dictionary : dict_name={}

for adding a new element to dictionary: dict_name['element']=value

for getting keys of dictionary : dict_name.keys()

for checking if an element is in the dictionary : element in dict_name.keys()

for incrementing the value assigned to an element in a dictionary : dict_name['element']+=1

## Comments