У меня есть задание, где я должен описать некоторый код Python, но он ничего не делает. На что мне смотреть?

dbf отличается от большинства других пакетов DB тем, что вместо получения полностью отдельной структуры данных (например, набор строк как кортежей) вы работаете непосредственно с самим файлом dbf.

Проблема, с которой я столкнулась, заключалась в том, что когда я обновлял сразу несколько полей:

record.name = 'Some Name'
record.age = current_year -birth_year
record.hair_color = base_color * sun_tint

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

Чтобы обойти эту проблему, я добавил код, который является видом как фиксация на основе записи, а способ его активации - с with или с помощью Process:

with record:  # capture current values
    record.field1 = something
    record.field2 = something_else
    record.field3 = another_thing
# now some other code

Теперь, если произошла ошибка, исходные значения восстанавливаются; если ошибка не возникает, новые значения сохраняются в таблице dbf на диске.

Кроме with в записи, вы также можете использовать Process в связке записей, или вы могли бы избегайте проблемы и собирайте данные за пределами записи, а затем пишите все сразу:

for record in table:
    new_data = {}
    new_data['field1'] = 'a name'
    new_data['field2'] = an_age
    dbf.write(record, new_data)

Итак, чтобы вернуться к вашему коду, самый простой способ его исправить:

with dbf.Table("aa.dbf") as table:
    for record in dbf.Process(table):
        record[3] = 200
0
задан John 21 February 2019 в 02:43
поделиться

1 ответ

Он что-то делает. Вы просто не видите, что он делает, потому что вы ничего не делаете с выводом unknown. Попробуйте заменить

unknown('qwerty')

на

print(unknown('qwerty'))

и посмотрите, что вы получите.

Редактировать: Похоже, в вашем вопросе есть опечатка:

word=word[:i-1]+word[i]+word[i-1]+word[i+1]

, скорее всего, должно быть:

word=word[:i-1]+word[i]+word[i-1]+word[i+1:]

Это изменение должно сделать рекурсивную пузырьковую сортировку. [ 119]

0
ответ дан John 21 February 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: