2014-03-11 2 views
0

Я создал этот код, чтобы получить 3 разных варианта в 3 разных местах. На самом деле это программа для флеш-карт, которую я надеялся получить, но не могу. Он входит в бесконечный цикл, и я понятия не имею, почему. Могут быть и другие проблемы, но я еще не получил их, но, пожалуйста, скажите мне в любом случае. Сохраните имена sam var, чтобы я мог легко понять. Я прикрепил весь код. Они еще несколько, но еще не реализованы.(!) Бесконечный цикл при сравнении переменных, и я не знаю почему?

Существует также 3 списка, каждый с 14 пунктов, но эти не будут идти в код:

key_words = [ «Целлюлоза», «дыхании», «Гемоглобин», «Вентиляция», «хрящ», ' «Цитоплазма», «Ядро», «Альвеоли», «Аминокислоты», «Вирус», «Белые кровяные клетки», «Фотосинтез», «Стомата», «Вакцина», «Волокно»)

defs = [' Жесткое вещество, которое образует клеточные стенки зеленых растений »,« Химическая реакция, вызывающая выделение энергии из глюкозы »,« Вещество, которое присоединяется к кислороду и переносит его вокруг тела в крови »,« Дыхание », Жесткое, гладкое вещество, покрывающее концы костей, чтобы защитить их »,« Желеобразная часть клетки, где химическая реа «Контролирует, что происходит внутри клетки», «Маленькие воздушные мешки в легких», «Производится при переваривании белков», «Самый маленький тип микроба», «Может поглощать бактерии или вырабатывать антитела», «Процесс превращения углекислого газа, воды и света в глюкозу и кислород »,« Маленькие дыры в нижней части листа »,« Мертвые или неактивные формы микроорганизма »,« Питающее вещество, которое нельзя переваривать »)

Завершено = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

благодаря Каллум

import random 
option1 = random.randint(int(1), int(14)) 
option2 = random.randint(int(1), int(14)) 
option3 = random.randint(int(1), int(14)) 

while option1 == option2 or option1 == option3: 
    placement1 = random.randint(int(1), int(3)) 

while option2 == option3: 
    option2 = random.randint(int(1), int(3)) 


placement1 = random.randint(int(1), int(3)) 
placement2 = random.randint(int(1), int(3)) 
placement3 = random.randint(int(1), int(3)) 

while placement1 == placement2 or placement1 == placement3: 
    placement1 = random.randint(int(1), int(3)) 

while placement2 == placement1 or placement2 == placement3: 
    placement3 = random.randint(int(1), int(3)) 

print('What is the correct defenition for', key_words[option3]) 
place3 = 1 

if placement1 == 1: 
    print('1: ', defs[option1]) 
elif placement1 == 2: 
    print('1: ', defs[option2]) 
elif placement1 == 3: 
    print('1: ', defs[option3]) 
    place3 = '1' 
if placement2 == 1: 
    print('2: ', defs[option1]) 
elif placement2 == 2: 
    print('2: ', defs[option2]) 
elif placement2 == 3: 
    print('2: ', defs[option3]) 
    place3 = '2' 
if placement3 == 1: 
    print('3: ', defs[option1]) 
elif placement3 == 2: 
    print('3: ', defs[option2]) 
elif placement3 == 3: 
    print('3: ', defs[option3]) 
    place3 = '3' 


choice = str(input('Enter 1, 2 or 3: ')) 
if choice == place3: 
    print('Well done, correct.') 
    a = completed[option3] + 1 
    completed[option3] += 1 
else: 
    print('Inccorect. Have another look and we`ll come back later.') 
+2

Нет причин для преобразования целочисленных литералов в целые числа (т. Е. 'Int (1)', 'int (3)' и т. Д.) –

+0

Вы заметили, что есть «placement1 = random.randint (int (1) , int (3)) "сначала, если? который я считаю опцией1. – Lafexlos

+0

Я не испытываю этот инфинитивный цикл thingy – embert

ответ

2

В своем первом цикле:

while option1 == option2 or option1 == option3: 
    placement1 = random.randint(int(1), int(3)) 

Вы никогда не изменяете значение option1. Если условие истинно входит в цикл, оно останется истинным навсегда. Вы имели в виду использовать option1 вместо placement1?

+0

Ударьте меня за секунды! :) –

+0

Спасибо за это, но теперь опция1 и option3 одинаковы при печати. еще раз спасибо – user3258159

1

Вы никогда не вырветесь из своего первого цикла.

while option1 == option2 or option1 == option3: 
    placement1 = random.randint(int(1), int(3)) 

условие зависит от значений ОПЦИЯ1, option2 и OPTION3, которые никогда не скорректированных в теле цикла. Если код входит в цикл, он останется там.

Кстати, этот код имеет множество других серьезных проблем и запахов кода. У меня нет времени называть их всех.

Смежные вопросы