2014-10-09 5 views
-1

Я пытаюсь преобразовать переменную, значение которой изменяется, однако значение обычно равно одному десятичному месту, например. 0,5. Я пытаюсь изменить эту переменную на 0.50. Я использую этот код, но когда я запускаю программу она говорит TypeError: Can't convert 'float' object to str implicitlyПреобразование переменной float в строку

Вот мой код:

while topup == 2: 
    credit = credit + 0.5 
    credit = str(credit) 
    credit = '%.2f' % credit 
    print("You now have this much credit £", credit) 
    vending(credit) 
+0

Это не ошибка, которую я получаю. Какую версию Python вы используете? – Kevin

+0

Ошибка в том, что вы передаете строку в '.% .2f '% credit'' TypeError: требуется float' для python 3 и' TypeError: аргумент float, а не str' для python 2. –

+0

@ Kevin Я использую Python 3.4 – NoobProgrammer

ответ

1
while topup == 2: 
    credit = float(credit) + 0.5 
    credit = '%.2f' % credit 
    print("You now have this much credit £", credit) 
    vending(credit) 

проблема не может плавать Форматировать строку

"%0.2f"%"3.45" # raises error 

вместо этого он ожидает число

"%0.2f"%3.45 # 0k 
"%0.2f"%5 # also ok 

поэтому, когда вы звоните str(credit) он разбивает строку формата прямо ниже (что, кстати, также отбрасывает кредит обратно в строку)

кстати вы действительно должны делать это только при печати

credit = 1234.3 
print("You Have : £%0.2f"%credit) 

в общем, вы хотите ваш кредит будет числовым типом, чтобы вы могли делать математику с ним

+0

Есть ли в любом случае я могу решить свою проблему любым другим способом, не используя str (кредит)? – NoobProgrammer

+1

нет оснований для использования 'str (credit)' –