Python3类型错误

Python3类型错误,python,random,typeerror,Python,Random,Typeerror,我正在写一个程序来模拟射击目标。我遇到了一个问题。我得到一个错误“TypeError:不能将序列与'float'类型的非int相乘” 守则: import random import math def present(l): i=0 while i<=10: for x in range(i,4+i): print(l[x]+"/",end="")

我正在写一个程序来模拟射击目标。我遇到了一个问题。我得到一个错误
“TypeError:不能将序列与'float'类型的非int相乘”

守则:

import random
import math
def present(l):
        i=0
        while i<=10:
                for x in range(i,4+i):
                        print(l[x]+"/",end="")
                i=i+5
                print("\n")
def xypoang(x,y):
    langd=math.sqrt(x*x+y*y)
    poang=(110-langd)/20
    if poang>110:
        poang=0
    poang=round(poang)
    return poang

def userwant(randomlist,person):  #person is number of person
    personind=int(person)*5
    list1=[]
    list2=[]
    list3=[]
    for r in range(1,11):
        s=random.normalvariate(randomlist[personind+4],randomlist[person+1])
        list1.append (s)
    for t in range(1,11):
        s=random.normalvariate(randomlist[personind+4], randomlist[personind+1])
        list2.append (s)
    for l in range (1,11):
        poang=xypoang(list1[l-1], list2[l-1])
        list3.append (poang)
    print(randomlist[personind], end="\t")
    for r in range (1,11):
        print(list3[r-1], end="\t")
    print("\n")
def main():
        contestants = open("pdel.txt","r")
        contestantsfile = contestants.readlines()
        contestantslist=[]
        for element in contestantsfile: 
                contestantslist.append (element.strip())
        present(contestantslist)
        while True:
                seasons= input("Write number of competitions")
                try:
                        competnr = int(seasons)
                except ValueError:
                        print ("Valid number, please")
                        continue
                if competnr>0:
                        break
                else:
                        print ("valid number please")
        nr=1
        while competnr>0:
                print("tävling nr",nr)
                x=0
                while x<int(len(contestantslist)/5):
                        userwant(contestantslist,x)
                        x=x+1
                competnr=competnr-1
                nr=nr+1
main()
随机导入
输入数学
def存在(l):
i=0
而i110:
波昂=0
poang=圆形(poang)
返回坡昂
def userwant(randomlist,person):#person是人数
personind=int(个人)*5
列表1=[]
列表2=[]
列表3=[]
对于范围(1,11)内的r:
s=random.normalvariate(randomlist[personind+4],randomlist[person+1])
列表1.1追加
对于范围(1,11)内的t:
s=random.normalvariate(randomlist[personind+4],randomlist[personind+1])
列表2.2追加
对于范围(1,11)内的l:
poang=xypoang(列表1[l-1],列表2[l-1])
list3.append(poang)
打印(随机列表[PersonId],end=“\t”)
对于范围(1,11)内的r:
打印(列表3[r-1],end=“\t”)
打印(“\n”)
def main():
参赛者=开放(“pdel.txt”,“r”)
参赛者文件=参赛者。readlines()
参赛者名单=[]
对于参赛者文件中的元素:
CompetitivesList.append(element.strip())
出席(参赛者名单)
尽管如此:
季节=输入(“写入比赛数量”)
尝试:
competner=int(季节)
除值错误外:
打印(“请输入有效号码”)
持续
如果competner>0:
打破
其他:
打印(“请输入有效号码”)
nr=1
当competner>0时:
印刷品(“tävling nr”,nr)
x=0

当x将一个文件读入一个列表时,然后继续将该列表传递给函数
userwant()
,然后将该列表的项传递给
random.normalvariate()

问题是
random.normalvariate()
期望
float
s作为参数,但您的列表包含
str
ing。您需要先将它们转换为
float
s

理想情况下,在读取文件时可以这样做,假设每行包含一个浮点数:

for element in contestantsfile: 
    contestantslist.append(float(element))
如果不是这样,则需要在此处进行转换:

s = random.normalvariate(float(randomlist[personind+4]),float(randomlist[person+1]))

您可能需要整理缩进。如果它现在没有造成问题,那么将来肯定会。我们在谈论哪个缩进?事实上,它有时是8个空格,有时是4个。啊,是的,你是对的,没有注意到这一点。谢谢你指出这一点。谢谢,这解决了问题。
s = random.normalvariate(float(randomlist[personind+4]),float(randomlist[person+1]))