Я хочу написать функцию decode (chmod), которая принимает трехзначный номер разрешений в виде строки и возвращает разрешения, которые она предоставляет. Кажется, работает, если я не попрошу нулевой элемент. Я не мог понять, почему так.Python list zeroth element mix
def decode(chmod):
liste = [int(i)for i in str(chmod)]
chmod = ["None", "Execute only", "Write only",
"Write and Execute", "Read only",
"Read and Execute", "Read and Write",
"Read Write and Execute"]
for i in liste:
print chmod[i]
return liste
print decode(043)
Спасибо за ваш ответ - изменение
str
Try. Но я не должен участвовать в работе. Я только проверял, работает ли это. – janvar
Когда python видит 043, он считает, что это целое число в восьмеричном формате. Ваша функция декодирования получит этот intger. Выполнение str() на нем не то, что вы хотите. Если вы хотите передать восьмеричное целое число, вы должны преобразовать его обратно в восьмеричную строку rep. (str() недостаточно). – sureshvv
@grv: В описании, которое вы написали, написано: «принимает трехзначный номер разрешения ** как строку **». Но в вашем тесте вы не передаете строку; вы передаете целое число. Отсюда и необходимость цитат. –