在python 3中,我的Monty Hall游戏刺激器的输出总是错误的

在python 3中,我的Monty Hall游戏刺激器的输出总是错误的,python,python-3.x,Python,Python 3.x,我正试图重现蒙蒂·霍尔的游戏( 它将要求用户输入一个数字(我的代码要求“输入一个随机种子”)首先,如果用户没有输入数字,游戏将显示一条错误消息。如果用户确实输入了数字,游戏将开始。然后,游戏将询问用户想要测试游戏多少次。因此,如果用户说5,则游戏将重复五次,并在完成所有五个游戏后再次询问用户。但是,如果用户输入字符串/非数字,如“5”,则游戏应要求用户输入数字,直到用户最终输入数字 以下是输入内容的示例 以下是输出的内容 Enter Random Seed: Welcome to Monty H

我正试图重现蒙蒂·霍尔的游戏( 它将要求用户输入一个数字(我的代码要求“输入一个随机种子”)首先,如果用户没有输入数字,游戏将显示一条错误消息。如果用户确实输入了数字,游戏将开始。然后,游戏将询问用户想要测试游戏多少次。因此,如果用户说5,则游戏将重复五次,并在完成所有五个游戏后再次询问用户。但是,如果用户输入字符串/非数字,如“5”,则游戏应要求用户输入数字,直到用户最终输入数字

以下是输入内容的示例

以下是输出的内容

Enter Random Seed:
Welcome to Monty Hall Analysis
Enter 'exit' to quit.
How many tests should we run?
Game 1
Doors: ['G', 'C', 'G']
Player Selects Door 1
Monty Selects Door 3
Player should switch to win.
Game 2
Doors: ['C', 'G', 'G']
Player Selects Door 1
Monty Selects Door 2
Player should stay to win.
Game 3
Doors: ['G', 'C', 'G']
Player Selects Door 2
Monty Selects Door 1
Player should stay to win.
Game 4
Doors: ['C', 'G', 'G']
Player Selects Door 1
Monty Selects Door 2
Player should stay to win.
Game 5
Doors: ['G', 'C', 'G']
Player Selects Door 3
Monty Selects Door 1
Player should switch to win.
Stay Won 60.0% of the time.
Switch Won 40.0% of the time.
How many tests should we run?
Thank you for using this program.
以下是我的程序输出的内容


如果我的代码真的很糟糕或者没有意义,很抱歉。我是一名新程序员。而且,我只是想让实际的游戏运行起来,然后才能处理%stay-won和%switch-won部分。

您将这段代码放入无限循环中,这就是为什么每次都会调用它的原因

try:
    tests = int(input('How many tests should we run?\n'))
    tests = int(tests)
except ValueError:
    print('Please enter a number:')
    continue
以下是我的解决方案:

import random
G=0
G2=0
C=0
try:    
    random_seed = input('Enter Random Seed:\n')
    random_seed = int(random_seed)
    print('Welcome to Monty Hall Analysis')
    exit = input("Enter 'exit' to quit.\n")
    while True:
        if exit == 'exit':
                print('Thank you for using this program.')
                break
        try:
                tests = int(input('How many tests should we run?\n'))
                tests = int(tests)
        except ValueError:
                print('Please enter a number:')
                continue
        stay_cases = 0
        switch_cases = 0
        for _ in range(tests):
            select_door = ['G', 'C', 'G']
            random.shuffle(select_door)
            player_door = int(input('Doors: '+ str(select_door)))
            if random.shuffle(select_door) == "['G', 'C', 'G']":
                    G = 1
                    C = 2
                    G2 = 3
            elif random.shuffle(select_door) == "['C', 'G', 'G']":
                    C = 1
                    G = 2
                    G2 = 3
            elif random.shuffle(select_door) == "['G', 'G', 'C']":
                    G = 1
                    G2 = 2
                    C = 3
            if player_door == C:
                    print('Player should stay to win')
                    stay_cases += 1
            else:
                    print('Player should switch to win')
                    switch_cases += 1
            doors = [1 , 2 , 3]
            random.choice(doors)
            print('Player Selects Door: ', player_door)
            print('Monty Selects Door: ', random.choice(doors))
        print('Stay Won {}% of the time.'.format((stay_cases/tests) * 100))
        print('Switch Won {}% of the time.'.format((switch_cases/tests) * 100))
except ValueError:
    print('Seed is not a number!')
我已经为uu范围内(测试)添加了
,主游戏引擎应该运行
测试

我还实现了一个部分,上面写着当时的“保持胜利”

我给你的代码应该可以完成这项工作,但是,如果用户选择的门不是提供的门之一,它将崩溃。为了避免这种情况,你可以使用
if player\u door not in doors
检查用户选择是否是提供的门之一

import random
G=0
G2=0
C=0
try:    
    random_seed = input('Enter Random Seed:\n')
    random_seed = int(random_seed)
    print('Welcome to Monty Hall Analysis')
    exit = input("Enter 'exit' to quit.\n")
    while True:
            if exit == 'exit':
                    print('Thank you for using this program.')
                    break
            try:
                    tests = int(input('How many tests should we run?\n'))
                    tests = int(tests)
            except ValueError:
                    print('Please enter a number:')
                    continue
            select_door = ['G', 'C', 'G']
            random.shuffle(select_door)
            player_door = int(input('Doors: '+str(select_door)))
            if random.shuffle(select_door) == "['G', 'C', 'G']":
                    G = 1
                    C = 2
                    G2 = 3
            elif random.shuffle(select_door) == "['C', 'G', 'G']":
                    C = 1
                    G = 2
                    G2 = 3
            elif random.shuffle(select_door) == "['G', 'G', 'C']":
                    G = 1
                    G2 = 2
                    C = 3
            if player_door == C:
                    print('Player should stay to win')
            else:
                    print('Player should switch to win')
            doors = [1 , 2 , 3]
            random.choice(doors)
            print('Player Selects Door: ', player_door)
            print('Monty Selects Door: ', random.choice(doors)) 
except ValueError:
    print('Seed is not a number!')
try:
    tests = int(input('How many tests should we run?\n'))
    tests = int(tests)
except ValueError:
    print('Please enter a number:')
    continue
import random
G=0
G2=0
C=0
try:    
    random_seed = input('Enter Random Seed:\n')
    random_seed = int(random_seed)
    print('Welcome to Monty Hall Analysis')
    exit = input("Enter 'exit' to quit.\n")
    while True:
        if exit == 'exit':
                print('Thank you for using this program.')
                break
        try:
                tests = int(input('How many tests should we run?\n'))
                tests = int(tests)
        except ValueError:
                print('Please enter a number:')
                continue
        stay_cases = 0
        switch_cases = 0
        for _ in range(tests):
            select_door = ['G', 'C', 'G']
            random.shuffle(select_door)
            player_door = int(input('Doors: '+ str(select_door)))
            if random.shuffle(select_door) == "['G', 'C', 'G']":
                    G = 1
                    C = 2
                    G2 = 3
            elif random.shuffle(select_door) == "['C', 'G', 'G']":
                    C = 1
                    G = 2
                    G2 = 3
            elif random.shuffle(select_door) == "['G', 'G', 'C']":
                    G = 1
                    G2 = 2
                    C = 3
            if player_door == C:
                    print('Player should stay to win')
                    stay_cases += 1
            else:
                    print('Player should switch to win')
                    switch_cases += 1
            doors = [1 , 2 , 3]
            random.choice(doors)
            print('Player Selects Door: ', player_door)
            print('Monty Selects Door: ', random.choice(doors))
        print('Stay Won {}% of the time.'.format((stay_cases/tests) * 100))
        print('Switch Won {}% of the time.'.format((switch_cases/tests) * 100))
except ValueError:
    print('Seed is not a number!')