2016-01-14 4 views
-2

Я уже задал аналогичный вопрос об этом, но это только для списка чисел от 0 до 15. Я думал, что вы пытаетесь преобразовать числа от 0 до более 15. Вот что я написал до сих порпреобразование чисел из базы 10 в базовую 4

def base_convert(i, b): 
    result = [] 
    for i in range(20): 
      while i > 0: 
       result.insert(0, i % b) 
       i = i // b 
      return result 

print(base_convert(i,4)) 

но я получил ошибку, говоря, что имя «i» не определено. Я что-то пропустил? Или, может быть, я написал неправильный код. Спасибо за ответ.

+4

'печати (base_convert (я, 4))' Вы не определили 'i' при вызове функции. –

+0

Подсказка: помните, что основание 4 равно 1/2 восьмеричного, так что 027 = 2 * 8 + 7 * 0 – rbp

+0

ответил ниже, решив вашу проблему? Если это поможет, пожалуйста, примите его, чтобы помочь тем, у кого есть схожие проблемы. Если это не помогло, сообщите мне, чтобы я мог удалить его, чтобы люди не тратили время на это. – innoSPG

ответ

1

Три проблемы:

  1. Вы не определили i при вызове функции, как упоминался Морган
  2. i является входным аргументом, так что вы не должны переопределить его в функции перед ее использованием.
  3. Вам не нужен цикл for.

Он должен выглядеть следующим образом с помощью теста на 9

def base_convert(i, b): 
    result = [] 
    while i > 0: 
      result.insert(0, i % b) 
      i = i // b 
    return result 

print(base_convert(9,4) 
Смежные вопросы