Python 程序未按预期结束
下面的代码继续打印出来Python 程序未按预期结束,python,Python,下面的代码继续打印出来您赢了即使计算机卡更高 import random computer_card = random.choice([2,3,4,5,6,7,8,9,10,11,12,13,14]) player_card = raw_input('Please pick a card \n') if player_card == 'Jack' or player_card == 'jack': player_card = 11 if player_card == 'Queen'
您赢了代码>即使计算机卡
更高
import random
computer_card = random.choice([2,3,4,5,6,7,8,9,10,11,12,13,14])
player_card = raw_input('Please pick a card \n')
if player_card == 'Jack' or player_card == 'jack':
player_card = 11
if player_card == 'Queen' or player_card == 'queen':
player_card = 12
if player_card == 'King' or player_card == 'king':
player_card = 13
if player_card == 'Ace' or player_card == 'ace':
player_card = 14
if computer_card == player_card:
print 'Computer Choice: ', computer_card
print 'Player Choice: ', player_card
print 'Tie!'
elif computer_card > player_card:
print 'Computer Choice: ', computer_card
print 'Player Choice: ', player_card
print 'Computer Wins!'
elif computer_card < player_card:
print 'Computer Choice: ', computer_card
print 'Player Choice: ', player_card
print 'You Win!'
else:
print 'I am not sure what is really going on if you got to this line.'
随机导入
计算机卡=随机选择([2,3,4,5,6,7,8,9,10,11,12,13,14])
玩家卡=原始输入('请选择一张卡\n')
如果玩家卡=='Jack'或玩家卡=='Jack':
玩家卡=11
如果玩家卡=='Queen'或玩家卡=='Queen':
玩家卡=12
如果玩家卡=='King'或玩家卡=='King':
玩家卡=13
如果玩家卡=='Ace'或玩家卡=='Ace':
玩家卡=14
如果计算机卡==玩家卡:
打印“计算机选择:”,计算机卡
打印“玩家选择:”,玩家卡
打印“领带!”
elif计算机卡>玩家卡:
打印“计算机选择:”,计算机卡
打印“玩家选择:”,玩家卡
打印“计算机获胜!”
elif计算机卡<玩家卡:
打印“计算机选择:”,计算机卡
打印“玩家选择:”,玩家卡
打印“你赢了!”
其他:
打印“如果你到了这一行,我不确定到底发生了什么。”
问题:
原始字符串()读取的输入将转换为字符串。所以这条线,
player\u card=raw\u input()
读取输入,将其转换为字符串并将其放入播放器卡中。和'1'>9
一种可能的修复方法:
如果输入不是['jack'、'queen'、'king'或'ace',请更改比较流并将输入转换为int
if player_card == 'Jack' or player_card == 'jack':
player_card = 11
elif player_card == 'Queen' or player_card == 'queen':
player_card = 12
elif player_card == 'King' or player_card == 'king':
player_card = 13
elif player_card == 'Ace' or player_card == 'ace':
player_card = 14
else:
player_card = int(player_card)
进一步改进:虽然此解决方案可以解决眼前的问题,但代码可以得到很大改进。一些改进建议
确保您的代码可以处理来自用户[never trust]的无效输入
用户输入]
使用dict或list将用户输入转换为数字
重视而不是逐个处理案例
raw\u input
将字符串放入变量player\u card
。当玩家选择国王、王后、王牌、杰克时,player\u card
的值通过if
语句更改为int。但是如果玩家卡
不是这些,则玩家卡
中的值仍然是字符串,这可以通过将玩家卡
转换为整数来解决。典型问题:比较字符串和整数。这可能是Python-2.x?@WillemVanOnsem它是Python-2.7,当你说比较字符串和整数时……你是说这个吗?player\u card=int(原始输入('Please pick a card\n'))为什么要重复其他答案?我只是觉得答案需要解释为什么会出错以及出错的地方:)如果用户输入错误,例如字符串,这将失败。我认为OP需要重写他的全部代码。否则+1。这个解决方案将解决眼前的问题。@ChihebNexus:同意。这更多的是为了解决眼前的问题,而不是给出一个完美的解决方案。我想我们可以把它作为家庭作业;-)当然可以。如果您愿意,您可以编辑您的答案并提及:-)这将有助于OP。