为什么我会遇到无法解决的类型错误

时间:2013-11-13 12:09:13

标签: python

import random

while True:
    dice1=random.randint (1,6)
    dice2=random.randint (1,6)


strengthone = input ("Player 1, between 1 and 10 What do you want your characters strength to be? Higher is not always better.")
skillone = input ("Player 1, between 1 and 10 What do you want your characters skill to be? Higher is not always better.")

if str(strengthone) > int(10):
    print ("Incorrect value")
else:
    print ("Good choice.")
if skillone > 10:
    print ("Incorrect value.")
else:
    print ("Good choice.")

strengthtwo = input ("Player 2, between 1 and 10 what do you want your characters strength to be? Higher is not always better.")
skilltwo = input ("Player 2, between 1 and 10 what do you want your characters skill to be? Higher is not always better.")

if strengthtwo > 10:
    print ("Incorrect value.")
else:
    print ("Good choice.")
if skillone > 10:
    print ("Incorrect value.")
else:
    print ("Good choice.")

strengthmod = strengthone - strengthtwo
skillmod = skillone - skilltwo

print ("Player 1, you rolled a", str(dice1))
print ("Player 2, you rolled a", str(dice2))



if dice1 == dice2:
    print ("")
if dice1 > dice2:
    newstrengthone = strengthmod + strengthone
    newskillone = skillmod + skillone
if dice2 > dice1:
    newstrengthtwo = strengthmod + strengthtwo
    newskilltwo = skillmod + skilltwo
if dice1 < dice2:
    newstrengthone = strengthmod - strengthone
    newskillone = skillmod - skillone
if dice2 < dice1:
    newstrengthtwo = strengthmod - strengthtwo
    newskilltwo = skillmod - skilltwo

if strengthone == 0:
    print ("Player one dies, well done player two. You win!")
if strengthtwo == 0:
    print ("Player two dies, well done player one. You win!")
if newstrengthone == 0:
    print ("Player one dies, well done player two. You win!")
if newstrengthtwo == 0:
    print ("Player two dies, well done player one. You win!")

break

它用于学校项目,因此代码的目标不会有多大意义。由于缩进,我有一些语法错误。我现在把它们分类了,我有这个:

Traceback (most recent call last):
  File "N:\Computing\Task 3\Program.py", line 11, in <module>
    if str(strengthone) > int(10):
TypeError: unorderable types: str() > int()

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

  1. 您无法比较strint。所以改变

    if str(strengthone) > int(10):
    

    if int(strengthone) > int(10):
    
  2. 将10转换为int是不必要的,因为它已经是一个int。

    print (type(10)) # <type 'int'>
    

    所以,这可以写成这样的

    if int(strengthone) > 10:
    
  3. 更好的是,您可以将input以外的值转换为相应的类型

    strengthone = int(input ("Player 1,..."))
    skilltwo = int(input ("Player 2,..."))
    

    那么,您可以比较像这样的值

    if strengthone > 10:
    

答案 1 :(得分:0)

更改

if str(strengthone) > int(10):

if strengthone.isdigit() and int(strengthone) > 10: