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

Sqrt() сам округляет числа ¯\_(ツ)_/¯

18.06.2019, 01:28. Показов 2353. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно, сделал подобие калькулятора и в ходе теста обнаружил, что при извлечении корня из целого числа происходит округление. К примеру, "sqrt 3" выводит 2. У меня ступор. Где я тупой?

Код:
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
from math import floor, sqrt
 
print("Enter expression (separate by spaces) using following mathematical signs \ key words:\n\n[+] - addition\n[-] - subtraction\n[*] - multiplication\n[/] - division\n[%] - remainder of division\n[^] - exponentiation\n[!] - factorial\n[sqrt] - square root\n\nExamples: 2 + 2, sqrt 4, 3!\n")
 
while 1:
    factnum = 0
    factflag = False
    sign = ""
    while 1:
        try:
            enter = input()
 
            for i in range(len(enter)):
                if enter[i] == "!" and i == len(enter) - 1:
                    factnum = int(enter[:i])
                    factflag = True
                    break
            if (factflag):
                tmp = 1
                for i in range(1, factnum + 1):
                    tmp *= i
                print("=", tmp, end="\n\n")
                break
 
            if enter[:5] == "sqrt ": # странные вещи происходят вот здесь
                numsqrt = float(enter.split()[1])
                if floor(numsqrt) == numsqrt:
                    print("=", "%.0f" % sqrt(numsqrt), end="\n\n")
                    break
                else:
                    print("=", sqrt(numsqrt), end="\n\n")
                    break
 
            num1 = float(enter.split()[0])
            sign = enter.split()[1]
            if sign != "+" and sign != "-" and sign != "*" and sign != "/" and sign != "%" and sign != "^":
                raise ValueError
            num2 = float(enter.split()[2])
            break
        except (ValueError, IndexError):
            print("\nPlease enter correct expression separating numbers by spaces\n")
    if sign == "+":
        if floor(num1 + num2) == num1 + num2:
            print("=", "%.0f" % (num1 + num2), end="\n\n")
        else:
            print("=", num1 + num2, end="\n\n")
    elif sign == "-":
        if floor(num1 - num2) == num1 - num2:
            print("=", "%.0f" % (num1 - num2), end="\n\n")
        else:
            print("=", num1 - num2, end="\n\n")
    elif sign == "*":
        if floor(num1 * num2) == num1 * num2:
            print("=", "%.0f" % (num1 * num2), end="\n\n")
        else:
            print("=", num1 * num2, end="\n\n")
    elif sign == "/":
        if floor(num1 / num2) == num1 / num2:
            print("=", "%.0f" % (num1 / num2), end="\n\n")
        else:
            print("=", num1 / num2, end="\n\n")
    elif sign == "%":
        if floor(num1 % num2) == num1 % num2:
            print("=", "%.0f" % (num1 % num2), end="\n\n")
        else:
            print("=", num1 % num2, end="\n\n")
    elif sign == "^":
        if floor(num1 ** num2) == num1 ** num2:
            print("=", "%.0f" % (num1 ** num2), end="\n\n")
        else:
            print("=", num1 ** num2, end="\n\n")
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.06.2019, 01:28
Ответы с готовыми решениями:

Определите число, для получения которого из числа 1 существует 175 программ
Есть задача: Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера: 1....

Как сделать так чтобы в tetxbox1 выводились числа от одного до 175 но при условии того что я должен нажать 175 раз на
Как сделать так что бы в tetxboxs1 выводиллись числа от одного до 175 но при условий того что я должен нажать 175 раз на кнопку и ввывод...

Используя комбинацию CAR и CDR, выбрать из списка ((HEIGHT 72) (WEIGHT 175) (HAIR BLOND)) элемент 175 2
Доброе утро. Помогите с решением вот такой вот задачи 1. Используя комбинацию CAR и CDR, выбрать из списка ((HEIGHT 72) (WEIGHT 175)...

2
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
18.06.2019, 01:41
Лучший ответ Сообщение было отмечено ExyK как решение

Решение

28 строка. попробуйте, например.
Python
1
print("=", "%.2f" % sqrt(numsqrt), end="\n\n")
1
0 / 0 / 0
Регистрация: 11.05.2018
Сообщений: 2
18.06.2019, 01:59  [ТС]
Спасибо большое, в очередной раз невнимательность

Добавлено через 10 минут
Python
1
if floor(sqrt(numsqrt)) == sqrt(numsqrt):
Вот так это должно было быть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2019, 01:59
Помогаю со студенческими работами здесь

Масштабирование фона 175%+
Есть фон, при масштабировании от 100% до 25% он растягивается отлично, но если задать масштаб свыше 150% появляется полоса прокрутки и...

Ищу клавиатуру CBR KB-175
Где найти такую клавиатуру (первое фото)? Сколько бы я не заказывал, вместо первого фото, приходит как на втором фото. Может она...

Вычислить Функцию y=ln(x+V¯x) ; на отрезке [0,8;2П] с шагом h=0,1
Народ подскажите пожалуйста с Паскалем в Школе еще шарил более менее сходил в армию ваще отупел и не фига не помню. Вычислить Функцию...

Java Developer (г. Королёв), 175-300К
В российский офис компании Wiley (крупная американская издательская компания, www.wiley.com) приглашаются Java разработчики уровней Middle...

Java Developer, Королев\Москва, 175 - 300К
В российский офис компании Wiley (крупная американская издательская компания, www.wiley.com) приглашаются Java разработчики уровней Middle...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru