Волхвы c Площадь Python 3 - PullRequest
       30

Волхвы c Площадь Python 3

0 голосов
/ 17 марта 2020

Возникли проблемы с моим кодом, и я не могу его исправить или узнать, где я ошибся. любая помощь приветствуется.

она запускается, но не go дальше, чем пользователь, вводящий имя текстового файла.

предполагается, что он прочитал ввод пользователя и из этого чтения текстовый файл и объявить, является ли это волшебный c пазл или нет, я хотел, чтобы это тоже читалось 5x5, но я немного растерялся, как это сделать

column = 0
row = 0
data = []
def main():

    file = input("Enter filename :")
    while True:
        try:
            f = open(file+".txt","r")
            break
        except:
            file = input("Enter filename :")


        for line in f.readline():
            numbers = line.split(' ')
            cube = [int(x) for x in numbers]
            is_magic(x)


def is_magic(x):

    if not dupe(x) and check_sum(x):        
        print ('Valid')

    else:        
        print ('Invalid')


def dupe(x):


    if len(x) == len(set(x)):        
        return False
    return True



def check_sum(x):


    if vertical_check(x) and horizontal_check(x) and diagonal_check(x):
        return True
    return False


def vertical_check(x):

    if sum(x[0:9:3]) == sum(x[1:9:3]) == sum(x[2:9:3]) == 15:      
        return True    
    return False


def horizontal_check(x):

    if sum(cube[0:3]) == sum(cube[3:6]) == sum(cube[6:9]) == 15:      
        return True    
    return False


def diagonal_check(x):

    if sum(cube[0:9:4]) == sum(cube[2:7:2]) == 15:      
        return True    
    return False

def writeFile(x):
    f = open("VALID_"+x+".txt","w")
    text = ""
    for a in data:

        for x in a:
            text = text+str(x)+" "
        text = text+"\n"

    f.write(text)
    f.close()
    return

main()
'''

txt файл 3x3

2 9 4

7 5 3

6 1 8

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Оператор break внутри, в то время как True заставляет вас ломать l oop.

while True:
try:
    f = open(file+".txt","r")
    break
1 голос
/ 17 марта 2020

причиной зависания программы является оператор break после открытия файла. Этот оператор break завершит работу с параметром while l oop, поэтому остальная часть кода не будет выполнена.

            f = open(file+".txt","r")
            break   # <<<< remove this
...