проблема заключалась в том, чтобы получить число 'n' di git и распечатать каждое число di git через пробел. В чем может быть проблема? - PullRequest
0 голосов
/ 16 марта 2020

Я попробовал следующий код, но он дает правильный ответ, если число цифр меньше 16. Как и в случае ввода number=111000111000111, он дает правильный ответ, но если number=111000111000111000, он дает неправильные ответы.

print("Enter a number of any length")
a=int(input())
b=str(a)
x=len(b)
print(b)
print(x)
for b in b:
     if x<0:
         break
     print(int(a/pow(10,x-1))%10,end=" ")
     x=x-1

Правильный вывод:

Enter a number of any length
111000111000
111000111000
12
1 1 1 0 0 0 1 1 1 0 0 0 

Неверный вывод, если число цифр> 16:

Enter a number of any length
123456789999900987654321 #input
123456789999900987654321 #converted string
24                       #length of string
1 2 3 4 5 6 7 8 9 9 9 9 9 0 0 0 8 2 2 0 6 4 4 6 #output

Ответы [ 2 ]

3 голосов
/ 16 марта 2020

Это размер целого числа. Вы можете достичь своей цели, используя следующий код:

print("Enter a number of any length")
num = input("Enter a number of any length: ")
print("len of input {}".format(len(num)))
print(' '.join(num))
1 голос
/ 16 марта 2020

Проблема в том, что вы используете /, что приводит к неточности с плавающей запятой в игре. Используйте // для целочисленного деления, и вы получите правильный вывод.

В любом случае, другим способом:

>>> number = 123456789999900987654321
>>> print(*str(number))
1 2 3 4 5 6 7 8 9 9 9 9 9 0 0 9 8 7 6 5 4 3 2 1

Или, так как пользователь вводит число в виде строки, нет необходимости конвертировать в int и обратно в строку:

>>> print(*input())
123456789999900987654321
1 2 3 4 5 6 7 8 9 9 9 9 9 0 0 9 8 7 6 5 4 3 2 1
...