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]))