Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 程序未按预期结束_Python - Fatal编程技术网

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。