ValueError: не удалось преобразовать строку в число с плавающей точкой: '30, ' - PullRequest
0 голосов
/ 20 февраля 2019

это мой первый пост в переполнении стека.

Я получаю сообщение об ошибке, когда я выполняю упражнение для колледжа, и я хотел бы получить некоторую помощь, так как я новичок в Python, но у меня есть некоторые знания по программированию (с C #) так что мне очень сложно писать на этом новом языке.

у меня есть этот массив в качестве примера: 30, 20, 10, 15, 20, 34, 23, 12, 23, 34, 30, 15, 51 это те цифры, которые мне нужны для вывода: ~ [7.4]
, но каждый раз, когда я его вставляю, выдается ошибка кода: ValueError: не удалось преобразовать строку в число с плавающей точкой: '30, '.

не имеет ничего с ошибками (я думаю), такЯ не знаю, как решить эту проблему.

Я заранее ценю вашу помощь.

import sys 


def floats_println_bracket(a):
print("[", end='')
if (len(a) > 0):
    print("%g" % a[0], end='')
    for i in range(1, len(a) ):
        print(" %g" % a[i], end='')
print("]")


def rewards(a):
global trimmedvalue 
temp = []
for i in len(a):
    if i//3 == 0:
       comission = temp.append(i) 
       total = a[i - 1] + a[i - 2] + [i - 3]        
    if total > 60:        
        comissionvalue = trimmedvalue
        comissionvalue = trimmedvalue + (total * 0.05)
        comission.append(comissionvalue)            
    return comission



def test_rewards():
while True:
    a = []
    try:
        line = input().split()
    except (EOFError, KeyboardInterrupt):
            sys.exit(0)
    if line:
        for i in line:
            a.append(float(i))
    z = rewards(a)
    floats_println_bracket(z)

if __name__ == '__main__':
test_rewards()

Ответы [ 4 ]

0 голосов
/ 20 февраля 2019

Разделить на основе ',' или ', ' на входе

 line = input().split(',')
0 голосов
/ 20 февраля 2019

Как бы ужасно это ни было, операция довольно быстрая и охватит множество ситуаций.

a.append(float(i.replace(",", "").strip()))

Используется в:

while True:
    a = []
    try:
        line = input().split()
    except (EOFError, KeyboardInterrupt):
            sys.exit(0)
    if line:
        for i in line:
            a.append(float(i.replace(",", "").strip()))
    z = rewards(a)
    floats_println_bracket(z)
0 голосов
/ 20 февраля 2019

Вы можете использовать map для преобразования списка чисел

test_string = "30, 20, 10, 15, 20, 34, 23, 12, 23, 34, 30, 15, 51"
map(float,test_string.split(','))

Также при условии, что у вас есть несколько значений для разделения на

import string
import re
test_string = "30| 20, 10* 15, 20, 34@ 23, 12, 23, 34, 30, 15, 51"
map(float,re.split('['+'|'.join(string.punctuation)+']',test_string))

Вывод

[30.0, 20.0, 10.0, 15.0, 20.0, 34.0, 23.0, 12.0, 23.0, 34.0, 30.0, 15.0, 51.0]

Примечание: в Python3 вам, возможно, придется преобразовать окончательный вывод в list

0 голосов
/ 20 февраля 2019

Вы ошибаетесь: «ValueError: не удалось преобразовать строку в число с плавающей точкой: '30, '."

Вы должны избавиться от', 'например: Предполагая, что вы всегда хотите избавиться от последнейchar:

your_almost_number = '30,'
your_number = float(your_almost_number[:-1])

Случай только с ',':

your_almost_number = '30,'
your_number = float(your_almost_number.split(',')[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...