Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/75: Рейтинг темы: голосов - 75, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 17

Пишу по книжке "Грокаем алгоритмы" точнее даже списываю код программы, выдает ошибку, и не пойму в чем дело

05.04.2019, 21:49. Показов 14626. Ответов 18

Студворк — интернет-сервис помощи студентам
В редакторе sumlime text 3 ввел данный код, и пишет что ошибка в 18 строчке, как я понял 18 и 19 почти одинаковые в обоих значит ошибка не пойму что не так)) Хелп плиз) Я начинающий программист, примерно знаю основы C#, и такие не языки программирования html5, css3) Начинал с C#, сейчас в веб хочу податься, чтобы быстрее разобраться в программировании, а в дальнейшем вернуться к более тяжелому(созданию приложений, а самой главной целью будут игры) Сейчас хочу изучть js и python, чтобы писать какие никакие сайты и немного посидеть на фрилансе для того чтобы набрать опыт на реальных заданиях, вот смотрю ютубера Гошу Дударя и Хауди хо, посоветовали изучить книгу Грокаем алгоритмы и вот на первой же главе ошибка в коде) Помогите) что не так.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def binary_search(list, item):
    low = 0
    high = len(list)-1
 
    while low <= high:
        mid = (low + high)
        guess = list[mid]
        if guess == item:
            return mid
        if guess > item:
            high = mid - 1
        else:
            low = mid + 1
        return None
 
    my_list = [1, 3, 5, 7, 9]
 
    print binary_search(my_list, 3) # => 1 ---------- тут ошибка (18 строка)
    print binary_search(my_list, -1) # => None
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.04.2019, 21:49
Ответы с готовыми решениями:

почему то выдает ошибку, хотя делал по книжке, подскажите пожалуйста в чем ошибка
почему то выдает ошибку, хотя делал по книжке решение системы линейных алгебраических уравнений x1 − 2x2 + 3x3 − 2x4 =...

Выдает ошибку,в чем дело
Создаю программу &quot;деканат&quot;O_o.Нужно чтоб таблица вывелась мне.Что только не меняла паскаль выдает ошибку 44.На...

Компилятор выдаёт ошибку, в чем дело??
Задание: 1. Определить иерархию классов (в соответствии с вариантом). Базовый класс должен включать обязательный атрибут char *name. 2....

18
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.04.2019, 22:14
Цитата Сообщение от swift_rx Посмотреть сообщение
тут ошибка (18 строка)
1) Какая?
2) Вы видели, что код в других постах - правильно отформатирован? Для этого есть кнопка Python на панели редактирования поста. В следующий раз не выкладывайте код без форматирования.
3) Всегда указывайте вашу версию Python.
0
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 17
05.04.2019, 22:27  [ТС]
Версия последняя python 3.7.3

Добавлено через 2 минуты
Какая ошибка я не знаю, я поэтому и спрашиваю, я первый раз на форуме, не знаю как правильно обращаться ко всем, поэтому просто попросил помощи, потому что ошибок нет, а саблайм почему то выдает её IndentationError: unindent does not match any outer indentation level
[Finished in 0.1s with exit code 1]
И всё

Добавлено через 1 минуту
Пишет директорию где находится файл с кодом и после него line 18
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.04.2019, 23:02
Цитата Сообщение от swift_rx Посмотреть сообщение
unindent does not match any outer indentation level
Просто переведите.
В Python отступы вместо скобок для выделения блоков. Сначала поймите их дзен - потом программируйте.
Уверен, в книге отступы проставлены как нужно, просто вы даже не удосужились прочитать хотя бы 10 строк документации о Python.
0
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 17
07.04.2019, 14:57  [ТС]
Нет, я проверял отступы, все отступы сделаны с помощью табуляции, я не знаю в чем ошибка, просто не понимаю
0
60 / 86 / 16
Регистрация: 25.03.2019
Сообщений: 235
07.04.2019, 15:13
Цитата Сообщение от swift_rx Посмотреть сообщение
я не знаю в чем ошибка, просто не понимаю
Тут никакой двойственности нет. Ошибка IndentationError: unindent does not match any outer indentation level буквально говорит о проблеме с отступами. Поэтому у вас либо в редакторе отступы как-то очень своебразно настроены, либо вы плохо проверяли.
0
2 / 2 / 0
Регистрация: 06.06.2011
Сообщений: 42
05.12.2020, 15:45
у вас return None должно быть на один таб назад. Ровно Под while

p.s люди, скидываете какие то ссылки отвечаете всякую дичь, неужели трудно объяснить в чем дело. Или лучше вообще не отвечать всяким бесполезным хламом
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.12.2020, 16:09
Исмаил,
Ты не прочитал первый пост? У него не был отформатирован код и не было видно, где поставлен return. Его позже отформатировал модератор.
В следующий думай, перед тем как писать.

Добавлено через 1 минуту
Цитата Сообщение от Исмаил Посмотреть сообщение
Или лучше вообще не отвечать всяким бесполезным хламом
Совет тебе же.

Добавлено через 2 минуты
Цитата Сообщение от Исмаил Посмотреть сообщение
люди, скидываете какие то ссылки отвечаете всякую дичь
Ссылка на документацию - лучший ответ. Запомни это. 99% всех проблем таких как ТС - ее полное игнорирование.
0
2 / 2 / 0
Регистрация: 06.06.2011
Сообщений: 42
05.12.2020, 16:13
Даже после редактирования табов в первом посте, таб стоит неправильно. и вся проблема именно из за этого.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.12.2020, 16:14
Цитата Сообщение от Исмаил Посмотреть сообщение
таб стоит неправильно.
Да. И это ошибка ТС. Только какое это отношение имеет к нашим ответам?
ТС сразу же ответили, что проблема в отступах.
0
2 / 2 / 0
Регистрация: 06.06.2011
Сообщений: 42
05.12.2020, 16:21
Извиняюсь если оскорбил ваши чувства, но так это было понятно и из ошибки в редакторе, и тогда вопрос можно было не задавать. Ну или только если человек не может сам перевести текст ошибки на русский. Когда я вообразил, что я в таком же положении как автор я возмутился этими ответами, но когда посмотрел все со стороны отвечающих возмутился вопросом автора. Лол
0
1 / 1 / 1
Регистрация: 20.05.2012
Сообщений: 14
05.01.2021, 18:04
может кому пригодиться:

должны быть скобки у print(), т.е. print(binary_search(my_list, 3))
1
14 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422
05.01.2021, 18:31
Цитата Сообщение от swift_rx Посмотреть сообщение
посоветовали изучить книгу Грокаем алгоритмы и вот на первой же главе ошибка в коде)
Тоже начинал с нее когда то
На 17-ой странице написано как раз, что используется Python 2.7.
Python
1
2
print(binary_search(my_list, 3))
print(binary_search(my_list, -1))
В Python3 скобки в print() обязательны.
Плюс у вас ошибка на 14 строке: return None у вас внутри цикла while, посмотрите книгу повнимательней;
Сравните 6 строку с книгой mid = (low + high), и лучше использовать целочисленное деление, если по книге делать, то опять ошибку выкинет)
И Python, кстати, крайне не любит, когда табуляцию с пробелами смешивают)
1
 Аватар для Rensys
27 / 10 / 3
Регистрация: 18.08.2020
Сообщений: 20
05.01.2021, 18:40
Плохо читаешь)) Для начала нужно было убрать лишние отступы перед инициализацией списка и двумя принтами, дабы вынести их за тело функции. Это раз. Во-вторых print() - это функция, и она нуждается в круглых скобках, а ты их не поставил. В-третьих - измени переменную mid. Она как бы говорит, что является серединой, поэтому ещё необходимо для корректной работы разделить её на 2 (//)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
def binary_search(list, item):
    low = 0
    high = len(list) - 1
 
    while low <= high:
        mid = (low + high) // 2
        guess = list[mid]
        if guess == item:
            return mid
        if guess > item:
            high = mid - 1
        else:
            low = mid + 1
    return None
 
my_list = [1, 3, 5, 7, 9]
 
print(binary_search(my_list, 3)) # => 1 ---------- тут ошибка (18 строка)
print(binary_search(my_list, -1)) # => None
0
0 / 0 / 0
Регистрация: 22.08.2021
Сообщений: 4
22.08.2021, 11:54
Подскажите зачем отнимать 1 в строке 6
Python
1
high = len(list) - 1
? Версия Python 3.8
0
 Аватар для Rensys
27 / 10 / 3
Регистрация: 18.08.2020
Сообщений: 20
22.08.2021, 12:27
Данной операцией мы получаем индекс последнего элемента в списке.
Например, у нас есть список, состоящий из пяти элементов, и чтобы получить индекс последнего, нужно из всей длины списка (len(list)) вычесть единицу. Получится 4.
1
0 / 0 / 0
Регистрация: 22.08.2021
Сообщений: 4
22.08.2021, 13:05
Мда... совсем забыл что индекс начинается с "0", и если поставить
Python
1
print(mylist[len(my_list)])
. Будет ошибка. т.к. число символов в списке my_list 6, а последний символ имеет индекс 5. Еще раз спасибо.
0
0 / 0 / 0
Регистрация: 12.10.2021
Сообщений: 1
12.10.2021, 07:50
Подскажите пожалуйста почему в данном коде всегда выскакивает None при выполнении функции:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def binary_seach(list,item):
    low = 0
    high = len(list) - 1
    while low <= high:
        mid = (low + high) // 2
        guess = list[mid]
        if guess == item:
            return print(f'Загаданное число находится в индексе:  {mid}')
        elif guess > item:
            high = mid - 1
        else:
            low = mid + 1
    return print('Угаданного числа нет в списке')
0
enx
 Аватар для enx
1189 / 765 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
12.10.2021, 08:03
Добавлено через 4 минуты
mTrust, проверяй

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def binary_search(list, item):
    low = 0
    high = len(list) - 1
    while low <= high:
        mid = (low + high) // 2
        guess = list[mid]
        if guess == item:
            return f'Загаданное число находится в индексе:  {mid}'
        elif guess > item:
            high = mid - 1
        else:
            low = mid + 1
    return 'Угаданного числа нет в списке'
 
 
my_list = [1, 3, 5, 7, 9]
print(binary_search(my_list, 3))
print(binary_search(my_list, -1))
Добавлено через 1 минуту
Цитата Сообщение от mTrust Посмотреть сообщение
почему в данном коде всегда выскакивает None
Так как функция ничего не возвращает, ни тут, ни тут:



Python
1
return print(f'Загаданное число находится в индексе:  {mid}')
Python
1
return print('Угаданного числа нет в списке')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.10.2021, 08:03
Помогаю со студенческими работами здесь

Выдает ошибку, не знаю в чем дело
Аргумент int не совместим параметром типа const char. В 64 строке выдает ошибку и я не знаю как ее решить. #include &lt;iostream&gt; ...

Выдает ошибку на 23 строке. В чем дело?
Здравствуйте. написал программку на лабораторную, но находит ошибку в 23 строке. Картинка:...

Пожалуйста, объясните в чём дело. Код, который я пишу в Visual Studio не обновляется в Unity
Пожалуйста, объясните в чём дело. Код, который я пишу в Visual Studio не обновляется в Unity. Например, написал вот этот код: using...

Выдает ошибку, не могу понять в чем дело
import React, { useState } from 'react'; import { StyleSheet, Text, View, FlatList } from 'react-native'; import { NavBar } from...

Подскажите, в чем дело? Почему выдаёт ошибку?
Здравствуйте! Не могу решить ошибку, может кто подскажет в чем дело? Scilab a = 10; b = 20; x = 0:0.1:a; y = 0:0.1:b; ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru