这是我在堆栈溢出中的第一个帖子。
我在上大学时做练习时遇到错误,我很想得到一些帮助,因为我是python的新手,但是我有一些编程知识(使用c#),所以我发现用这种新语言编写代码非常困难。
我以以下数组为例:30、20、10、15、20、34、23、12、23、34、30、15、51 这些是我需要输出的数字:〜[7.4]没有任何错误(我认为),所以我不知道如何解决这个问题。
感谢您的帮助。
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()
答案 0 :(得分:0)
您的错误是“ ValueError:无法将字符串转换为float:'30'。”
您必须删除“”,例如: 假设您总是想摆脱最后一个字符:
your_almost_number = '30,'
your_number = float(your_almost_number[:-1])
仅包含','的情况:
your_almost_number = '30,'
your_number = float(your_almost_number.split(',')[0])
答案 1 :(得分:0)
尽管丑陋,但操作速度非常快,并且可以涵盖许多情况。
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)
答案 2 :(得分:0)
您可以使用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
答案 3 :(得分:0)
根据输入中的','
或', '
拆分
line = input().split(',')