Ex 9.4 Python Coursera - PullRequest
       28

Ex 9.4 Python Coursera

0 голосов
/ 03 июня 2018

В настоящее время работаем над этим для курса Coursera's Python For Everybody.Это бывший 9.4.По какой-то причине количество пользователей в два раза больше, чем должно быть при запуске.Проблема, кажется, начинается на ранней стадии, так как строка имеет двойную сумму, которую она должна.У кого-нибудь есть идеи, где я ошибся?Спасибо!

name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"

handle = open(name)

lst = list()
#emcount = dict()
for line in handle:
    if not line.startswith("From"): continue
    line=line.split()
    print(line)
    lst.append(line[1])#adding each email occurrence to lst
#    print(lst)
emcount = dict()
for word in lst:
    emcount[word] = emcount.get(word,0)+1
#    print(emcount)

bigcount = 0#empty at beginning
bigword = None
for word,count in emcount.items():
    #items give you acopy of each key value pair, word is the key
    if bigcount> count:
        bigcount = bigcount
        bigword = bigword
        print(bigword, bigcount)
    else:
        bigcount = count
        bigword = word


`

1 Ответ

0 голосов
/ 14 июня 2018

Я работал над вашим кодом и внес изменения, чтобы он работал.

Составление списка не требовалось.Просто поместите данные прямо в диктовку.

Остальные операторы не нужны были.Вы хотите продолжать проверять, больше ли новое значение, чем старое, и если да, то сделайте его новым значением.

Bigcount и bigword должны быть равны None перед оператором if

Кроме того, вам нужно второе условие в операторе if, если значение равно None для первого прохода.

И вывели печать большого слова и большого числа за пределы цикла for, чтобы выводить результат только один раз.

Еще одна вещь, назначение говорит, чтобы найти все строки с «От», а не строки с «От».Видите разницу?

Надеюсь, это поможет.

name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
emcount = dict()
for line in handle:
    if not line.startswith("From "): continue
    line = line.split()
    line = line[1]
    emcount[line] = emcount.get(line, 0) +1 
bigcount = None
bigword = None
for word,count in emcount.items():
if bigcount == None or count > bigcount:
    bigcount = count
    bigword = word
print(bigword, bigcount)
...