Итак, у меня есть скрипт Python, который выполняет двоичные преобразования чисел:
Итак, я сохраняю его как файл и нажимаю F5.
Вывод следующий:
Итак, чтобы проверить свой code на работоспособность, я пытаюсь скопировать вывод в ближайшее текстовое поле, которое смог найти. ChatGpt. Он волшебным образом отформатирован именно так, как и должен быть.
Почему он работает здесь, но не в IDLE?
А вот моя конфигурация шрифта, если это важно.
Кстати, я полный новичок в Python и не знаю многого о таких вещах, как настройка IDLE.
Итак, если у вас есть какой-то настоящий "вопрос", так это ПОЧЕМУ он это делает, КАК это можно исправить и есть ли способ заставить его работать глобально, потому что командная строка Windows делает то же самое.
РЕДАКТИРОВАТЬ: Если вы Интересно, что такое 16-битный режим, я знаю. Он сломан. Я попросил chatgpt написать эту часть, так что я не ожидал, что он будет работать идеально с первой попытки.
def generate_binary_representation(bit_size):
binary_dict = {}
for num in range(2 ** bit_size):
binary_rep = format(num, f'0{bit_size}b')
binary_dict[num] = {"binary": binary_rep, "components": [int(b) for b in binary_rep]}
return binary_dict
def run_conversion(bit_size):
return generate_binary_representation(bit_size)
def display_results(bit_size, binary_dict):
for num, data in binary_dict.items():
if bit_size == 4:
print(f'+{num} = {data["components"]}')
print(f'8421\n{data["binary"]}\n')
elif bit_size == 8:
print(f'+{num} = {num}')
print(f'128 64 32 16')
print(f'| / / /')
print(f'| / / / ')
print(f'| | / / ')
print(f'| | / / ')
print(f'| | | / 8421')
print(f'{data["binary"][:4]} {data["binary"][4:]}\n')
elif bit_size == 16:
print(f'+{num} = {num}')
print(f'32768 16384 8192 4096')
print(f'| / / / /')
print(f'| / / / / ')
print(f'| / / / / ')
print(f'| / / / / ')
print(f'| | / / / ')
print(f'| | / / / ')
print(f'| | / / / ')
print(f'| | / / / ')
print(f'| | / / / ')
print(f'| | / / / 128 64 32 16')
print(f'{data["binary"][:4]} {data["binary"][4:8]} {data["binary"][8:12]} {data["binary"][12:]}\n')
def main():
print("Choose bit size for conversion:")
print("1. 4-bit")
print("2. 8-bit")
print("3. 16-bit")
choice = input("Enter your choice (1/2/3): ")
bit_size_map = {'1': 4, '2': 8, '3': 16}
if choice not in bit_size_map:
print("Invalid choice. Exiting.")
return
bit_size = bit_size_map[choice]
background_run = input("Do you want to run the conversion in the background? (yes/no): ").lower()
if background_run == 'yes':
limit = int(input(f"Enter the limit for conversion (max {2 ** bit_size - 1}): "))
if limit > 2 ** bit_size - 1:
print(f"Limit exceeds maximum value for {bit_size}-bit. Exiting.")
return
binary_dict = generate_binary_representation(bit_size)
binary_dict = {k: v for k, v in binary_dict.items() if k <= limit}
print(f"Conversion completed up to {limit}.")
else:
binary_dict = run_conversion(bit_size)
display_results(bit_size, binary_dict)
while True:
lookup_choice = input("Enter a number to lookup (or 'exit' to quit): ").lower()
if lookup_choice == 'exit':
break
try:
num = int(lookup_choice)
if num in binary_dict:
data = binary_dict[num]
if bit_size == 4 and num <= 15:
print(f'+{num} = {data["components"]}')
print(f'8421\n{data["binary"]}\n')
elif bit_size == 8:
print(f'+{num} = {num}')
print(f'128 64 32 16')
print(f'| / / /')
print(f'| / / / ')
print(f'| | / / ')
print(f'| | / / ')
print(f'| | | / 8421')
print(f'{data["binary"][:4]} {data["binary"][4:]}\n')
elif bit_size == 16:
print(f'+{num} = {num}')
print(f'32768 16384 8192 4096')
print(f'| / / / /')
print(f'| / / / / ')
print(f'| / / / / ')
print(f'| / / / / ')
print(f'| | / / / ')
print(f'| | / / / ')
print(f'| | / / / ')
print(f'| | / / / ')
print(f'| | / / / ')
print(f'| | / / / 128 64 32 16')
print(f'{data["binary"][:4]} {data["binary"][4:8]} {data["binary"][8:12]} {data["binary"][12:]}\n')
else:
print(f'{num} is out of range for {bit_size}-bit conversion.')
except ValueError:
print("Invalid input. Please enter a number or 'exit'.")
if __name__ == "__main__":
main()