@enq1

Объясните как работает код в примере?

Изучаю пайтон столкнулся с упражнением :

Код упражнения
# -*- coding: utf-8 -*-

import codecs, sys 
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout =outf

from sys import argv

script, user_name = argv
promt = '>'

print u"Привет %s, я - сценарий %r " % (user_name, script)
print u"Я хочу задать тебе несколько вопросов " 
print u" Я тебе нравлюсь, %s?" % user_name
likes = raw_input(promt) .decode(sys.stdin.encoding or 
                   locale.getpreferrendcoding(True))
print u"Где ты живешь, %s?" % user_name
lives = raw_input(promt) .decode(sys.stdin.encoding or 
                    locale.getpreferrendencoding(True))
print u" На каком ты компьютере работаешь ?"
computer = raw_input(promt) .decode(sys.stdin.encoding or 
                    locale.getpreferredencoding(True))
print u"""
Итак , ты ответил %r на вопрос, нравлюсь ли я тебе.
Ты живешь в %r .Не представляю , где это.
И у иеья есть компьютер %r. Прекрасно ! 
""" % (likes, lives, computer)


Мне не очень понятны некоторые строки , которые укажу ниже . Хотелось бы получить объяснение как это работает . Я напишу как понимаю я .

Первый вопрос

#импортируем модуль codecs,sys
import codecs, sys 
#так как  этот код должен работать в консоле которая работает на cp866, а пользователь вводит 
# в другой кодировке, получаются кракозябры. 
#для этого мы делаем  обертку которая перекодирует  вводимую  данные в одной кодировке в cp866
# создается переменная в которую записывается  результат перекодирования .
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
#как раз тут  отдается на вывод  в консоль уже перекодированный текст 
sys.stdout =outf

Что собственно не понятно.Хочу понять как работает код с точки компьютера.Пытаюсь читать документацию на docs.python но это сложно для меня .

Второй вопрос

#создается переменная likes в которую записывается результат ввода пользователем из input и декодируется . 
#А что дальше я не понимаю 
# Хотелось бы понять как это работает с точки зрения 
# компьютера, программирования 
likes = raw_input(prompt).decode(sys.stdin.encoding or 
locale.getpreferredencoding(True))


Надеюсь мои вопросы для вас звучат не сумбурно. На сегодняшний день для меня эта ситуация ввела меня в тупик . Надеюсь здесь мне объяснят как работает код в двух приведенных мною примерах.
  • Вопрос задан
  • 294 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Andy_U
Код вашего упражнения - на уже мертвом питоне версии 2.X. Забудьте про эти извращения. Изучайте 3.X, где все заметно проще.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы