python - TypeError: unsupported operand type(s) for Sub: 'str' and 'int'
ringa_lee
ringa_lee 2017-04-17 15:17:30
[Python讨论组]

import random
def number_to_name(number):
if number==0:
return "rock"
elif number==1:
return "Spock"
elif number==2:
return "paper"
elif number==3:
return "lizard"
elif number==4:
return "scissor"
else:
return "wrong number you have entered"
def name_to_number(name):
if name=="rock":
return 0
elif name=="Spock":
return 1
elif name=="paper":
return 2
elif name=="lizard":
return 3
elif name=="scissor":
return 4
else:
return "wrong name you have entered"

define the number to name function

define compare function

def rpsls(player_choice):

print "the player choice is "+player_choice

player_number=name_to_number(player_choice)

computer_number=random.randrange(0,5)

computer_choice=number_to_name(computer_number)

print "the computer choice is "+computer_choice

diff = (player_number - computer_number) % 5

if diff==1 or diff==2:
    print "player wins"
elif diff==3 or diff==4:
    print "computer wins"
else:
    print "ties"    
print ""

rpsls("rock")
rpsls("Spock")
rpsls("paper")
rpsls("lizard")
rpsls("scissors")
总是提示diff = (player_number - computer_number) % 5这个操作式中存在int与str不能相减的问题,但是我没有发现问题啊

ringa_lee
ringa_lee

ringa_lee

全部回复(1)
PHP中文网
def name_to_number(name):
    if name=="rock":
        return 0
    elif name=="Spock":
        return 1
    elif name=="paper":
        return 2
    elif name=="lizard":
        return 3
    elif name=="scissor":
        return 4
    else:
        return "wrong name you have entered"
rpsls("scissors")

传入scissors,返回的是“wrong name you have entered”。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号