2016-05-09 4 views
-4

Это мой код до сих пор, прямо сейчас он чувствителен к регистру. Я попытался сделать строчку в нижнем регистре (используя .lower) без успеха. Может кто-нибудь помочь?Может кто-нибудь помочь мне сделать мой случай программы нечувствительным?

file=open("numbertext.txt","w") 
my_string= input("Enter a sentence. ") 
splitted = my_string.split() 

d = {} 
l=[] 
for i,j in enumerate(splitted): 
    if j in d: 
     l.append(d[j]) 
    else: 
     d[j]=i 
     l.append(i) 
print(l) 

file.write(str(l)) 

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 11, 5, 6] 

file=open("newfile.txt","w") 

file.close 
+1

Что ваша программа? Почему проблема в корпусе? –

+1

Где вы положили '.lower()' когда это не сработало? Он должен быть в конце строки 'my_string = ...' – zondo

+0

Возможно, он не работал так же, как запись 'file.close' фактически не вызывает метод close, вам нужно' file.close() ' –

ответ

0

Функция lower возвращает преобразованную строку и не преобразует строку самостоятельно. Вы должны использовать lower здесь:

splitted = my_string.lower().split() 

Оптимизация для вашего кода:

d = {} 
l=[] 
for i,j in enumerate(splitted): 
    l.append(d.setdefault(j, i)) 


with open("numbertext.txt","w") as f: 
    f.write(str(l)) 
0

В Python something.methodделает не вызов, метод - это просто обращается к атрибуту этого имени. Поэтому в вашем случае вам нужно сделать file.close() (или, еще лучше, использовать оператор with) и для вашей исходной проблемы: используйте somestring.lower().

0

splitted = my_string.lower().split() будет делать

Смежные вопросы