Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 25, 2011 19:32:17

stil
От:
Зарегистрирован: 2010-07-28
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

словарь

alexx11
может быть KOI-8?
возможно,надо будет потом узнать.

если никого не затруднит подскажите пожалуйста еще одно решение задачи: нужно открыть определенный фаил.py, в котором содержится словарь {ключ:значение} ,далее этот фаил исполняется,то есть в нем осуществляется поиск нужного слова и из него же выдается значение слова,затем операция заканчивается и дальше продолжается ход основной инструкции.вот пытаюсь что то сделать:
основная инструкция
if slovo in spisok:
myfile = open(“1.py”)
slovar = myfile.read()
print (“yes”) # вот гдето здесь должен исполняться 1.py,тоесть в нем должно искаться слово..

if slovo in slovar:
print (slovar)
else:
print (“нет такого слова”)
————————————–
1.py содержит
! /usr/bin/env python3
# -*- coding: utf-8 -*-

slovar = {“металл”:“прочное”,“стекло”:“хрупкое”,“дерево”:“горит”}



Отредактировано (Янв. 25, 2011 20:19:04)

Офлайн

#2 Янв. 25, 2011 22:36:58

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

словарь

назови файл 1.py скажем file1.py (чтоб с букв начиналось имя)
impot file1
mydic = file1.slovar
if slovo in mydic:



Офлайн

#3 Янв. 26, 2011 10:54:24

stil
От:
Зарегистрирован: 2010-07-28
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

словарь

огромное спасибо,код получился таким,переменную mydic пришлось заменить иначе не работало:
if slovo in spisok:
import file1
slovar = file1.slovar #вот здесь я немного не понял.
if slovo in slovar:
print (slovar)
else:
print (“нет такого слова”)
————————————————————–
slovar = file1.slovar
я вот здесь немного не понял,вводится переменная slovar, она равна file1(это я предпалагаю что фаил является уже модулем?), а дальше зачем писать точку и slovar ? если не сложно объясните плиз.



Офлайн

#4 Янв. 26, 2011 11:02:32

stil
От:
Зарегистрирован: 2010-07-28
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

словарь

вот этот вариант наверное правельней,но он не работает:
if slovo in spisok:
import file1
mydic = file1.slovar
if slovo in mydic:
print (slovar)
else:
print (“нет такого слова”)



Офлайн

#5 Янв. 26, 2011 11:16:32

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

словарь

if slovo[0] in spisok:
import file1
reload(file1) # если file1 изменялся после запуска скрипта без этой
# команды вы не увидите изменения
mydic = file1.slovar
if slovo in mydic:
print (mydic[slovo]) # здесь у вас была ошибка
else:
print ("нет такого слова")
может я что то упускаю но сначала вы проверяете slovo а потом уже slovo



Отредактировано (Янв. 26, 2011 11:20:50)

Офлайн

#6 Янв. 26, 2011 20:23:09

stil
От:
Зарегистрирован: 2010-07-28
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

словарь

решил проблему с именами выбираемых модулей,но из-за кодировки появляются ошибки.собственно вот:
if slovo in spisok:
modname = “filek%s” % (spisok[slovo])
filek = __import__(modname) #есть аналогичное exec “import ” + modname
mydic = filek.slovar # но в чем разница не знаю
————————
если список сделать только из английских букв то код работает идеально.



Отредактировано (Янв. 26, 2011 21:34:03)

Офлайн

#7 Янв. 26, 2011 21:11:12

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

словарь

В смысле вы хотите импортировать модуль с русским именем? Не выйдет.



Офлайн

#8 Янв. 26, 2011 21:23:53

stil
От:
Зарегистрирован: 2010-07-28
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

словарь

Андрей Светлов
Re: словарь
В смысле вы хотите импортировать модуль с русским именем? Не выйдет.
нет,я изначально знал что модули с русскими именами не сработают,поэтому имена будут filek%s где %s это число от 1 до 33 по числу букв соответственно.тоесть проверяется первая буква - загружается соответственный модуль.
filek = __import__(“filek%s” % (spisok[slovo]) )
———————————————————-
но вот кодировка все портит. какая в линуксе я не понимаю.



Отредактировано (Янв. 26, 2011 21:33:00)

Офлайн

#9 Янв. 26, 2011 21:57:45

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

словарь

Зависит от ваших настроек..
Кроме того, какую кодировку вы имеете в виду? Локаль процесса, файловой системы или что-то еще?
Или питона?
utf8, скорее всего - у вас по умолчанию.
Для питона - ascii, пока не укажете другую в заголовке # -*- encoding:utf-8 -*-



Офлайн

#10 Янв. 26, 2011 22:43:02

stil
От:
Зарегистрирован: 2010-07-28
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

словарь

Андрей Светлов
Кроме того, какую кодировку вы имеете в виду? Локаль процесса, файловой системы или что-то еще?
Или питона?
если бы я знал,я бы смог ответить на этот вопрос. все что знаю: мне нужно сделать виждет для среды kde в линуксе. какую кодировку использует kde или линукс я не знаю,но ввод букв с клавиатуры использующие кодировку должны совпадать с кодировкой исполняемого питоновского файла



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version