Целью кода было создание разностороннего треугольника (с номером 1) с самой острой точкой, направленной вниз. Программа работает, пока вы не введете более 17 входных данных, после чего программа перестанет использовать только 1 с
Я посмотрел в программу математически и не вижу ошибки
n=int(input())
X=0
for j in range(0,n):
X = (X*10)+1
print(X)
for i in range(1,n):
X = (X-1)/10
print(int(X))
Вы можете помочь найти почему?
2 ответа
У меня нет точного ответа, но это связано с точностью поплавка. Когда вы делаете X = (X-1)/10
, вы выполняете деление с плавающей запятой, которое при больших числах приводит к проблемам с точностью: смотрите https://docs.python.org/3/tutorial/floatingpoint.html для получения дополнительной информации.
Вы можете обойти это в вашем случае с помощью целочисленного деления. Если вы замените X = (X-1)/10
на X = (X-1)//10
, вы должны получить желаемое поведение.
Python преобразует большие числа в числа с плавающей запятой для деления, что приводит к небольшим ошибкам при преобразовании двоичных чисел в десятичные с большими числами. Я обнаружил, что если вы измените назначение во втором цикле на
X = ((X-1)//10)
Чтобы сделать усеченное деление, вы получите ожидаемый результат.
Было бы намного проще просто использовать строку из 1 и преобразовать в int
позже.
n=int(input())
for i in range(n, 0, -1):
print(i * '1')
# if needed
result = int(n * '1')
Выход (с вводом 20)
11111111111111111111
1111111111111111111
111111111111111111
11111111111111111
1111111111111111
111111111111111
11111111111111
1111111111111
111111111111
11111111111
1111111111
111111111
11111111
1111111
111111
11111
1111
111
11
1
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.