Rya*_*n A 2 python random return-value
问题:\n程序似乎不接受输入的整数。不会添加赢/输/平局计数,并且不会在调试模式下显示计算机选择
\n\n程序的基本设计: \n编写一个程序,让用户在计算机上玩石头、剪子、布游戏。\n该程序应按如下方式工作。\n显示一个菜单:
\n\n得分: 0 胜, 0 平, 0 负\n(D)ebug 显示计算机的选择\n(N)新游戏\n(Q)uit
\n\n如果用户输入“Q”或“q”,程序将结束。“N”或“n”表示新游戏,“D”或“d”表示调试模式,其他任何内容都会导致显示错误消息。
\n\n我的计划:
\n\nimport random\n\ndef main():\n\n    continuing = "y"\n\n    win = 0\n    lose = 0\n    draw = 0\n\n    while continuing == "y":\n        print("Score:", win,"wins,", draw, "draws,", lose,"losses")\n        print("(D)ebug to show computer\'s choice")\n        print("(N)ew game")\n        print("(Q)uit")\n\n        choice = input(" ")\n\n        if choice == "n" or choice == "N":\n            win, draw, lose = playgame(win, draw, lose)\n\n        elif choice == "d" or choice == "D":\n            win, draw, lose = playgame2(win, draw, lose)\n\n        elif choice == "q" or choice == "Q":\n            break\n\n\ndef playgame(win, draw, lose):\n\n    computer = random.randint(1,3)\n    player = input("Enter 1 for Rock, 2 for Paper, or 3 for Scissors: ")\n\n    if computer == 1 and player == 2:\n        Score = "You won"\n        win += 1\n\n    elif computer == 1 and player == 3:\n        Score = "You lost"\n        lose += 1\n\n    elif computer == 2 and player == 1:\n        Score = "You lost"\n        lose += 1\n\n    elif computer == 2 and player == 3:\n        Score = "You won"\n        win += 1\n\n    elif computer == 3 and player == 1:\n        Score = "You won"\n        win += 1\n\n    elif computer == 3 and player == 2:\n        Score = "You lost"\n        lose += 1\n\n    elif computer == player:\n        Score = "Draw"\n        draw += 1\n\n    return (win, draw, lose)\n\ndef playgame2(win, draw, lose):\n\n    computer = random.randint(1, 3)\n    player = input("Enter 1 for Rock, 2 for Paper, or 3 for Scissors: ")\n\n    if computer == 1 and player == 2:\n        Score = "You won"\n        print("Computer chose rock")\n        win += 1\n\n    elif computer == 1 and player == 3:\n        Score = "You lost"\n        print("Computer chose rock")\n        lose += 1\n\n    elif computer == 2 and player == 1:\n        Score = "You lost"\n        print("Computer chose paper")\n        lose += 1\n\n    elif computer == 2 and player == 3:\n        Score = "You won"\n        print("Computer chose paper")\n        win += 1\n\n    elif computer == 3 and player == 1:\n        Score = "You won"\n        print("Computer chose scissors")\n        win += 1\n\n    elif computer == 3 and player == 2:\n        Score = "You lost"\n        print("Computer chose scissors")\n        lose += 1\n\n    elif computer == player:\n        Score = "Draw"\n        print("Computer chose the same as you")\n        draw += 1\n\n    return (win, draw, lose)\n\n\nmain()           \n我不是 Pythonista,但猜测输入返回 strings,在与计算机的 int 进行比较之前,您需要转换为整数。
我还认为您在干燥代码时缺少一个技巧- 您应该能够拥有一个playgame方法,该方法需要一个额外的布尔参数debugmode,它不是直接调用 print ,而是调用间接调用,例如:
def debugPrint(debugString, debugMode)
     if debugMode
         print(debugString)
希望这有道理吗?
| 归档时间: | 
 | 
| 查看次数: | 2622 次 | 
| 最近记录: |