Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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 如何修复基于随机数生成器不重复的if语句_Python_Python 3.x - Fatal编程技术网

Python 如何修复基于随机数生成器不重复的if语句

Python 如何修复基于随机数生成器不重复的if语句,python,python-3.x,Python,Python 3.x,我正在做一个问答游戏,在询问首都城市和国家之间交替进行。它们应该随机交替,因此我使用随机数生成器,但是if语句不会根据随机数生成器的输出重复。(我对编码相当陌生,如果这太长,很抱歉) 代码如下: import random from random import randrange quest_one = int(input('How many questions? ')) for i in range(quest_one): number = (randrange(2)) Co

我正在做一个问答游戏,在询问首都城市和国家之间交替进行。它们应该随机交替,因此我使用随机数生成器,但是if语句不会根据随机数生成器的输出重复。(我对编码相当陌生,如果这太长,很抱歉)

代码如下:

import random
from random import randrange

quest_one = int(input('How many questions? '))

for i in range(quest_one):
    number = (randrange(2))



Country_main = {
    "Australia" : 'Canberra',
    'india' : 'New Delhi',
    'France' : 'Paris',
    'Japan' : 'Tokyo',
    'China': 'Beijing',
    'USA': 'Washington',
    'England': 'London',
    'Russia': 'Moscow',
    'Germany': 'Berlin',
    'Brazil': 'Brasilia',
    'Bangladesh': 'Dhaka'
}

Capital_main = {
    'Canberra': 'Australia',
    'New Delhi': 'India',
    'Paris': 'France',
    'Tokyo': 'Japan',
    'Beijing': 'China',
    'Washington': 'USA',
    'London': 'England',
    'Moscow': 'Russia',
    'Berlin': 'Germany',
    'Brasilia': 'Brazil',
    'Dhaka': 'Bangladesh'
}

def Capital_of():
    rando = random.choice(list(Country_main.items()))
    ans = input("What is the capital city of " + rando[0] + '? ')
    if rando[1] in ans:
        print('correct')
        #Change to add value to score later
    elif rando[1] not in ans:
        print('wrong')
    return


def Country_of():
    randy = random.choice(list(Capital_main.items()))
    ansy = input("Which country has the capital city " + randy[0] + '? ')
    if randy[1] in ansy:
        print('correct')
        # Change to add value to score later
    elif randy[1] not in ansy:
        print('wrong')
    return



if number == 1:
    Capital_of()
if number == 0:
    Country_of()

问题在于代码的结构方式。您的
for
循环应该是询问指定数量问题的主循环

按照现在的设置方式,for循环将生成
x
数量的随机数,然后退出循环并运行程序的其余部分

# current program

for i in range(quest_one):
    number = (randrange(2))

#
# more code
#

if number == 1:
    Capital_of()
if number == 0:
    Country_of()
您的
if
语句需要嵌套在
for
循环中,以便不断提问

我重新格式化了代码,因此
if
语句嵌套在
for
循环中。
试试这个:

import random
from random import randrange

Country_main = {
    "Australia" : 'Canberra',
    'india' : 'New Delhi',
    'France' : 'Paris',
    'Japan' : 'Tokyo',
    'China': 'Beijing',
    'USA': 'Washington',
    'England': 'London',
    'Russia': 'Moscow',
    'Germany': 'Berlin',
    'Brazil': 'Brasilia',
    'Bangladesh': 'Dhaka'
}

Capital_main = {
    'Canberra': 'Australia',
    'New Delhi': 'India',
    'Paris': 'France',
    'Tokyo': 'Japan',
    'Beijing': 'China',
    'Washington': 'USA',
    'London': 'England',
    'Moscow': 'Russia',
    'Berlin': 'Germany',
    'Brasilia': 'Brazil',
    'Dhaka': 'Bangladesh'
}


def main():
    num_questions = int(input('How many questions? '))

    for i in range(num_questions):
        number = (randrange(2))

        if number == 1:
            capital_of()
        else:
            country_of()


def capital_of():
    rando = random.choice(list(Country_main.items()))
    ans = input("What is the capital city of " + rando[0] + '? ')
    if rando[1] in ans:
        print('correct')
        #Change to add value to score later
    elif rando[1] not in ans:
        print('wrong')
    return


def country_of():
    randy = random.choice(list(Capital_main.items()))
    ansy = input("Which country has the capital city " + randy[0] + '? ')
    if randy[1] in ansy:
        print('correct')
        # Change to add value to score later
    elif randy[1] not in ansy:
        print('wrong')
    return


if __name__ == '__main__':
    main()