@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))


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

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

Похожие вопросы