txt = input("vilken textfil vill du använda?")
fil = open(txt,"r")
spelare=[]
resultat=[]
bästnamn=None
bästkast=0
for line in fil:
kolumn=line.split()
kolumn1=len(kolumn[1])
kolumn2=len(kolumn[2])
if len(kolumn)<5:
mu=float(kolumn[1])
sigma=float(kolumn[2])
#print(mu,sigma)
#kast=random.normalvariate(mu,sigma)
#print(kast)
for r in range(0,6):
kast=random.normalvariate(mu,sigma)
resultat.append(kast)
if max(resultat)>bästkast:
bästkast=max(resultat)
bästnamn=kolumn[0]
print("Segrare", bästnamn, "som stötte", bästkast, "meter")
当我运行程序时,我收到此错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 85: ordinal not in range(128)
我做错了什么?
感谢您这么多,是的,我有蟒蛇3.换作你伤心导入的编解码器,我现在得到另一个错误insteed。
ValueError: max() arg is an empty sequence
我做什么sholud?有什么建议?
答案 0 :(得分:0)
据我所知,你必须输入英文字母才能让python能够阅读它。所以你需要改变这些变量:
bästnamn
bästkast
编辑: max()
是最多提供一个列表,在字符串的情况下,它会将其分解为字母并返回字母表中的最大字母,如下所示:
myNumList = [1,2,4,5,8,50,10]`
print max(myNumList ) #result 50
myString = 'tree'
print max(myList) #result 't'
myMixList = [1,2,4,'Apple','20']`
print max(myMixList) #result 'Apple'
注意它不会对单integer
起作用,你会收到错误,但你确实有通行清单。
您的代码很好,只是您要提供的文档,初始化可能有一些错误,我看到您的应用程序至少需要4列,但从不使用第4列,它的文件类型并不重要,但我相信你的文件应该如此:
[String/number] [Number] [Number]
您的文档示例应如下:
String1 158 212
String2 584 795
1234567 845 356
String4 356 489
String5 876 215
String6 985 853
String7 111 809
String8 234 058
注意:如果第二列或第三列中的字符串可能导致错误,则字符串无法转换为float
以及random.normalvariate
不会字符串。
答案 1 :(得分:0)
你正在读取你的文件,好像它是用ASCII编码的,但它是
不。鉴于0xc3
我会说它可能以UTF-8编码。
因此,您需要使用UTF-8编码打开它:
import codecs
fil = codecs.open(txt, "r", "utf-8")
这一切都假设你使用的是Python 3,其中的字符串是Unicode 默认。既然你对非ASCII标识符没有任何问题,那就好了 像一个安全的假设。