Здесь у вас есть функция сортировки, которая надеется делать то, что вы хотите. Полное игнорирование специальных символов немного прикольное.
def sorting(word):
new_word = ""
for char in word:
# Remove special characters
if not char.isalnum():
continue
# Switch case
new_word += char.upper() if char.islower() else char.lower()
return (new_word.upper(), new_word)
Решили поменять регистры, так как для вас строчные должны быть заказаны перед прописными.
Используется:
words = []
n = int(input("Number of words: "))
for i in range(n):
word = raw_input("> ")
words.append(word)
result = sorted(words, key=sorting)
print(result)
Показывает:
Number of words: 5
> USA
> UK
> Germany
> Australia
> Canada
['Australia', 'Canada', 'Germany', 'UK', 'USA']
Можно также назвать так, дает тот же результат:
var = ['USA','UK','Germany','Australia','Canada']
s = sorted(var, key=sorting)
print(s)
Еще один более сложный пример, чтобы показать результат:
Number of words: 5
> ASD
> asd
> asD
> aSD
> .asd
['asd', '.asd', 'asD', 'aSD', 'ASD']
В зависимости от порядка ввода .asd
может быть первым или вторым, это вы получаете за игнорирование специальных символов.