在下面的程序中,靠近末尾的if语句的结果偶尔是错误的,但我看不到其中的模式。我已经尽可能多地调试了它,但是我找不到我的错误。我为大量的代码感到抱歉,但我不知道代码中的错误在哪里,我只知道它在下面的代码中的某个地方。你知道吗
如果您能帮忙,我们将不胜感激!你知道吗
我对python不是很有经验,所以请详细解释一下答案
for i in range(1,10):
import random
Cards = list(range(0,8))
print("shuffling...")
random.shuffle(Cards)
#print(Cards)
PlayerCards = []
ComputerCards = []
CardsLen = int(len(Cards)) / 2
for i in range(int(CardsLen)):
PlayerCards.append(Cards[0])
del Cards[0]
ComputerCards.append(Cards[0])
del Cards[0]
#print(PlayerCards)
#print(ComputerCards)
Ab5s = ['9', '12', '1', '10', '5', '6', '6', '8']
#print(Ab5s)
Ab5sS = sorted(Ab5s, key = int)
#print(Ab5sS)
AbNames = ['Magic', 'Cunning', 'Courage', 'Wisdom', 'Temper']
#print(AbNames)
Ab5Name = AbNames[4]
AbNamesDict = {5: Ab5s}
PlayerCardNum = PlayerCards[0]
ComputerCardNum = ComputerCards[0]
PlayerCardAb5 = Ab5s[PlayerCardNum]
ComputerCardAb5 = Ab5s[ComputerCardNum]
PlayerAbVal = Ab5s[PlayerCardNum]
ComputerAbVal = Ab5s[ComputerCardNum]
#print(PlayerAbVal)
#print(ComputerAbVal)
while True:
try:
PlayerAbUse = "Temper" #input("Which ability do you want to use ")
PlayerAbUse = PlayerAbUse.title()
PlayerAbNum = (AbNames.index(PlayerAbUse) + 1)
break
except ValueError:
print("error")
continue
AbList = AbNamesDict[PlayerAbNum]
PlayerAbVal = (AbList)[PlayerCardNum]
ComputerAbVal = (AbList)[ComputerCardNum]
#print(PlayerAbVal)
#print(ComputerAbVal)
print("Player has " + PlayerCardAb5 + " " + Ab5Name)
print("Computer has " + ComputerAbVal + " " + Ab5Name)
WonCards = []
#This is where I believe it is going wrong
if PlayerAbVal < ComputerAbVal:
Winner = 0
else:
if PlayerAbVal == ComputerAbVal:
Winner = 2
else:
Winner = 1
WonCards.append(PlayerCards.pop(0))
WonCards.append(ComputerCards.pop(0))
if Winner == 0:
print("Computer Win ")
while len(WonCards) > 0:
ComputerCards.append(WonCards.pop(0))
print("")
else:
if Winner == 1:
print("Player Win ")
while len(WonCards) > 0:
PlayerCards.append(WonCards.pop(0))
print("")
else:
print("Draw ")
Winner = random.randint(1,2)
您的问题是比较的是字符串,而不是数值。我最初的想法是您使用的是python2,但实际上这种失败也可以用lexicographical ordering来解释
将列表
Ab5sS
更改为包含整数。所以:要修复您的
print
,请将其转换为字符串,例如:或者,最好使用
format()
:正如您在另一条评论中提到的,您的问题是您将字符串作为值从文件中读取。这不会阻止您将值转换为
int
;最简单的方法可能只是列表理解:还有其他方法,比如
map
,但我认为那是falling out of favour。你知道吗只需修改
if
语句,强制类型为int
(使用if..elif..else
获得更多pythonicess)相关问题 更多 >
编程相关推荐