(May-20-2018, 07:24 AM)wavic Wrote: [ -> ]You have to get a data only from the 'capitals' list if the input country is there. If you put: print(countries) print(capitals) in the alif block, you will see that they are in order. elif line in countries: print(countries) print(capitals)
If the input country is in the list 'counties' you get the index of the country in that list and print the capital with the corresponding index in the 'capitals' list.
Yeap I understand all of it.
Indeed they are all in orders.
However, It could not pop the exact answer/output.
Example:
If I type "Malaysia", It came out with "The capital of Russia is Moscow" instead of "The capital of Malaysia is Kuala Lumpur". Although they are inside the list.
Output:
No. Countries Capitals
1 Malaysia Kuala Lumpur
2 Japan Tokyo
3 United States of America Washington
4 Canada Ottawa
5 Pakistan Islamabad
6 Australia Canberra
7 Mexico Mexico City
8 Thailand Bangkok
9 Taiwan Taipei
10 China Beijing
11 Czech Republic Prague
12 Russia Moscow
Enter a country name (x to Exit): Malaysia
The capital of Russia is Moscow
Enter a country name (x to Exit): x
Are you still printing it like this: print ("The capital of {0} is{1}".format(country,capital))
?
See my previous post how to do it. Get the index of the input country if it is the same as one of the 'countries' list and print the capital with the same index.
(May-20-2018, 08:51 AM)wavic Wrote: [ -> ]Are you still printing it like this: print ("The capital of {0} is{1}".format(country,capital))
? See my previous post how to do it. Get the index of the input country if it is the same as one of the 'countries' list and print the capital with the same index.
Yes I am still gonna need the
print ("The capital of {0} is{1}".format(country,capital))
I want to print out like:
Output:
"The capital of Malaysia is Kuala Lumpur"
only
This is the previous result:
Output:
No. Countries Capitals
1 Malaysia Kuala Lumpur
2 Japan Tokyo
3 United States of America Washington
4 Canada Ottawa
5 Pakistan Islamabad
6 Australia Canberra
7 Mexico Mexico City
8 Thailand Bangkok
9 Taiwan Taipei
10 China Beijing
11 Czech Republic Prague
12 Russia Moscow
Enter a country name (x to Exit): Malaysia
['Malaysia', 'Japan', 'United States of America', 'Canada', 'Pakistan', 'Australia', 'Mexico', 'Thailand', 'Taiwan', 'China', 'Czech Republic', 'Russia']
[' Kuala Lumpur', ' Tokyo', ' Washington', ' Ottawa', ' Islamabad', ' Canberra', ' Mexico City', ' Bangkok', ' Taipei', ' Beijing', ' Prague', ' Moscow']
The capital of Russia is Moscow
print("No.\tCountries\t\t\t Capitals\n ")
f = open(r'C:\Users\USER\Desktop\Notepad_Read\countries.txt')
count = 0
data = f.readlines()
for line in data:
line = line.rstrip('\n')
rec = line.split(',')
country = rec[0]
capital = rec[1]
count = count + 1
print("{0:1}\t{1:26}\t {2:24}".format(count,country,capital))
countries = [] #Empty list
capitals = [] #Empty list
n = len(countries)
ctry = str(input("Enter a country name (x to Exit): "))
i = 0
for line in data:
line = line.rstrip('\n')
rec = line.split(',')
country = rec[0]
capital = rec[1]
countries.append(rec[0]) #Country are stored in countries list
capitals.append(rec[1]) #Capital are stored in capitals list
count = count + 1
line = line.rstrip('\n')
country, capital = line.split(',')
if ctry == 'x':
break
elif ctry == countries[i]:
print ("The capital of {0} is{1}".format(country,capital))
break
else:
i = i + 1
else:
print("{0} is not in the list. Please try again.".format (ctry))
f.close()
I had found the solution.
This is what I needed.
Just share to let everyone make references. x)
CASE CLOSED
Good!
But if the user keeps with a nonexistent country more than 12 times the script exits with no result at all. Because of the for loop. It loops 12 times only. Also, both lists ( 'countries' and 'capitals' ) are created but never used. However, the script works.
Slightly different approach:
print("No.\tCountries\t\t\t Capitals\n ")
f = open(r'C:\Users\USER\Desktop\Notepad_Read\countries.txt')
count = 0
data = f.readlines()
countries = [] #Empty list
capitals = [] #Empty list
for line in data:
line = line.rstrip('\n')
ciuntry, capital = line.split(',')
countries.append(country) #Country are stored in countries list
capitals.append(capital) #Capital are stored in capitals list
count = count + 1
print("{0:2}\t{1:26}\t {2:24}".format(count,country,capital))
while True: # it loops until 'x' or the right county
ctry = input("Enter a country name (x to Exit): ")
if ctry == 'x' or ctry == 'X':
break
elif ctry.title() in countries:
i = countries.index(ctry.title()) # get the corresponding index
print ("The capital of {0} is{1}".format(ctry.title(),capitals[i]))
break
elif coutry.title() not in countries:
print("{0} is not in the list. Please try again.".format (ctry))
continue
f.close()
The title() method is used to guarantee that if the user inputs 'japan' ( all lower case ) the elif conditions will still work.
>>> 'japan'.title()
'Japan'