Как мне преобразовать мой список в строку?

Что я сделал:

with open('TheData.txt', 'r') as data_file:

        money = data_file.read()
        wednesday_tickets = ['W1', 'W2', 'W3']
        thursday_tickets = ['T1', 'T2', 'T3']
        friday_tickets = ['F1', 'F2', 'F3']

    countW = money.count (wednesday_tickets)
    countT = money.count (thursday_tickets)
    countF = money.count (friday_tickets)

    wednesday = countW * 5
    thursday = countT * 5
    friday = countF * 10

    money_raised = wednesday + thursday + friday

    print("The total money raised for charity is £ " + money_raised)

Вопрос: Когда я запустил свою программу, я получил ошибку «TypeError: не могу неявно преобразовать объект list в str». Я перепробовал все, что мне было известно, но не знаю, что мне делать, чтобы это преодолеть. Моя цель с помощью этого фрагмента кода - выяснить, сколько денег было собрано, подсчитав, сколько T1, T2, T3, W1, W2 ... есть в файле, и умножить их на их цену.


person Bobby    schedule 09.03.2016    source источник
comment
Возможный дубликат преобразования списка в строку   -  person Jacob Krall    schedule 09.03.2016
comment
Вопросы, требующие помощи по отладке (почему этот код не работает?), должны включать в себя желаемое поведение, конкретную проблему или ошибку и необходимый кратчайший код воспроизвести его в самом вопросе. Вопросы без четкой постановки проблемы не будут полезны другим читателям. См .: Как создать минимальный, полный и проверяемый пример. Пожалуйста, включите образец ввода, ожидаемый результат и полный текст любых ошибок или трассировок.   -  person MattDMo    schedule 09.03.2016
comment
Также возможно, что OP пытается получить продолжительность каждого дня, которая будет охвачена в разделе stackoverflow.com/questions/518021/   -  person goodguy5    schedule 10.03.2016


Ответы (1)


Проблема в трех строках, которые начинаются с

countW = money.count (wednesday_tickets)

Метод count ожидает одну строку, а не список строк. Кажется, вам нужно получить общее количество подсчетов, по одному подсчету для каждого типа билета. Вы можете заменить эту строку на

countW = sum(money.count(ticket) for ticket in wednesday_tickets)

То же самое и со следующими двумя строками. Это не самый эффективный подход, поскольку он включает в себя всего 9 передач данных, хотя, если речь идет буквально о билетах на что-то вроде школьного спектакля, я был бы удивлен, если бы эффективность была такой большой проблемой.

Кроме того, ваш последний оператор печати не будет работать, поскольку вы не можете напрямую объединить строку и число. Вместо этого используйте

print("The total money raised for charity is £", money_raised)

и позвольте функции печати преобразовать число в строку за вас.

person John Coleman    schedule 09.03.2016