Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 8

Хэштаблица ломается после ввода 13 слова. В чём проблема?

30.01.2020, 20:41. Показов 978. Ответов 5

Студворк — интернет-сервис помощи студентам
Вот, собственно, код.
После ввода 13 слова всё ломается. Его запись не происходит, а после повторной попытки записи выдаёт ошибку:
"File "C:/Users/Андрей/.spyder-py3/temp.py", line 48, in <module>
hashfile.append(int(b))

ValueError: invalid literal for int() with base 10: '13][ябло'"

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import math
import numpy as np
import random as rnd
 
pow = 4
word = input("Введите слово: ")
A = list(word)
 
l = len(word)
i, summ = 0, 0
while i < l:
    c = ord(A[i])
    summ += c 
    i += 1
rnd1 = rnd.randint(1,l)
rnd2 = rnd.randint(1,l) 
hsh = (summ/l + rnd1 + rnd2)%(2**pow)
print('Хэш слова ', word, ': ', int(hsh))
 
pi = list(str(math.pi))
del  pi[16], pi[1], pi[0]
tbl = []
tbl2 = []
for j in range(7): 
    n = 0
    m = 2
    tbl.append([])
    for i in range(7):
        npi = pi[n:m]
        new = ''.join(npi)
        tbl[j].append(int(new))
        n += 2
        m += 2
for col in tbl:
    col = np.random.permutation(col)
    tbl2.append(col)
    
hashfile = []
f = open('ht.txt', 'r+')
count = 0
for line in f:
    row = line.split(',') 
    a = row[0]
    a = a[2:-1]
    b = row[1]
    b = b[1:-2]
    hashfile.append(int(b))
    count +=1
f.close()
 
rnd3 = rnd.randint(0,6)
rnd4 = rnd.randint(0,6)
l = len(hashfile)
i = 0
while i < l:
    if count == 2**pow:
        print('Таблица заполнена')
        break
    if int(hsh) == hashfile[i]:
        rehash = hsh
        while int(rehash) == hashfile[i]:
            print('Такой хэш уже существует')
            rnd3 = rnd.randint(0,6)
            rehash = int(hsh + tbl2[rnd3][rnd4])%(2**pow)
            print ('Рехэш: ', rehash)
            i = 0
        hsh = rehash
    i += 1     
    
f = open('ht.txt', 'a')
lines = 0
for line in open('ht.txt'):
    lines += 1
hash_table = []
for j in range(1):
    if lines < 2**pow - pow:
        hash_table.append([])
        for i in range(1):
            hash_table[j].append(word)
            hash_table[j].append(int(hsh))
    elif lines == 2 ** pow - pow:
        pow *= 2
        for line in open('ht.txt', 'r+'):
            row = line.split(",") 
            a = row[0]
            a = a[2:-1]
            b = row[1]
            b = b[1:-2]
            b = int(b) * rnd.randint(1, 2**(pow/2))
            line = ''
            f.write('[%s, %s\n]' % (a, b))
            hashfile.append(int(b))
    else: break
        
print (hash_table)
 
with open('ht.txt', 'a') as f:  
    for i in hash_table:
        f.write('%s\n' % i)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2020, 20:41
Ответы с готовыми решениями:

Задача на acmp Факториалы! Ломается на 3 тесте. В чем проблема?
#include &lt;bits/stdc++.h&gt; using namespace std; int main() { int n,i,q,w=1,e; string s; cin&gt;&gt;n; cin&gt;&gt;s; ...

Ошибка ввода наименования состоящего из более, чем одного слова
Добрый день. При вводе наименования товара более чем одного слова программа перестает работать. В чем может быть проблема? Код: ...

Подскажите в чем ошибка, после ввода названия картины вылетает
type tzap=record nazv:string; imya:string; god_napis:integer; strana:integer; cena:integer; end;

5
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
30.01.2020, 20:46
Ну и зачем выкладывать сюда портянку кода? Неужели проблема поставить принт там, где возникает ошибка и проверить что именно кладется в int?
Хотя и так понятно, что кладется не число.
0
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 8
30.01.2020, 21:06  [ТС]
Вот, как видно, записывается число.
Изображения
 
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
30.01.2020, 21:12
Aks274,
Нет. Иначе не было бы ошибки:
Цитата Сообщение от Aks274 Посмотреть сообщение
invalid literal for int() with base 10: '13][ябло'"
Вы хотите оспорить очевидное? Тогда досвиданья.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
31.01.2020, 09:04
Покажите содержимое файла ht.txt

Похоже, вы неправильно в него записали данные или парсите неправильно.
0
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 8
31.01.2020, 20:11  [ТС]
Рыжий Лис, спасибо за отклик, проблема решена. В 39 строке поменял открытие файла в режим только для чтения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.01.2020, 20:11
Помогаю со студенческими работами здесь

Вывод текста после ввода определённого слова C++
Задача: Нужно вывести определённый текст в консоли после ввода в консоль определённого слова (не числа). Помогите пожалуйста, а то нужного...

Окно зависает после ввода слова val1
Зависает после того как пищу слово val1. После этого &quot;_&quot; (не знаю как назвать. ну тот которым пишу) сдвигается. Всё, после этого не на что...

Проблема с апк, вылетает после ввода номера телефона
Написал мобильное приложение на xamarin, вылетает апк после ввода номера, сервер работает корректно

После ввода русского слова, на консоль выводятся краказябры
#include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); string a;

не пойму в чем ошибка после ввода переменной и нажатие на кнопку выдаешь ошибку
#include &lt;vcl.h&gt; #include &lt;math.h&gt; #pragma hdrstop #include &quot;Unit1.h&quot; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru