Уведомления

Группа в Telegram: @pythonsu

#1 Июль 5, 2018 16:09:34

zefir
Зарегистрирован: 2018-07-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько условий

Решил оптимизировать свой говнокод. Было:

 first = raw_input()
second = raw_input()
if first== "a" and second =="1":
        z=1
        x=1
        Y = x+z
if first== "a" and second =="2":
        z=1
        x=2
        Y = x+z
if first== "a" and second =="3":
        z=1
        x=3
        Y = x+z
if first== "a" and second =="4":
        z=1
        x=4
        Y = x+z
if first== "b" and second =="1":
        z=2
        x=1
        Y = x-z
if first== "b" and second =="2":
        z=2
        x=2
        Y = x-z
if first== "b" and second =="3":
        z=2
        x=3
        Y = x-z
if first== "b" and second =="4":
        z=2
        x=4
        Y = x-z
if first== "c" and second =="1":
        z=3
        x=1
        Y = z-x
if first== "c" and second =="2":
        z=3
        x=2
        Y = z-x
if first== "c" and second =="3":
        z=3
        x=3
        Y = z-x
if first== "c" and second =="4":
        z=3
        x=4
        Y = z-x
W = Y*5
print (W)

Стало
 first = raw_input()
second = raw_input()
if first== "a":
    if second =="1":
        z=1
        x=1
    if second =="2":
        z=1
        x=2
    if second =="3":
        z=1
        x=3
    if second =="4":
        z=1
        x=4
    Y = x+z
if first== "b":
    if second =="1":
        z=2
        x=1
    if second =="2":
        z=2
        x=2
    if second =="3":
        z=2
        x=3
    if second =="4":
        z=2
        x=4
    Y = x-z
if first== "c":
    if second =="1":
        z=3
        x=1
    if second =="2":
        z=3
        x=2
    if second =="3":
        z=3
        x=3
    if second =="4":
        z=3
        x=4
    Y = z-x
W = Y*5
print (W)
Второй работает, но в моём коде всё, что идёт после if first== “a”: не работает.
Хз почему выдаёт
NameError: global name 'Y' is not defined
Голову поломал всю.
Код не весь т.к. там куча библиотек и т.д.

Офлайн

#2 Июль 5, 2018 16:22:32

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Несколько условий

Ну как видите ваша “оптимизация” так себе. Насколкьо я вижу из кода задача состоит в точ тчо на основе входных данных произвести несколько мат.операций. Первый параметр это буква латиницы которая трансформируется последовательный номер ее в алфавите. Второй параметр это число.
Демо код для питона 3

 import string
first = input()
second = input()
z = string.ascii_lowercase.index(first.lower()) + 1
x = int(second)
Y = z - x
W = Y*5
print(W)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Июль 5, 2018 16:30:52

zefir
Зарегистрирован: 2018-07-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько условий

Код удалил.

Отредактировано zefir (Июль 5, 2018 17:34:29)

Офлайн

#4 Июль 5, 2018 16:56:17

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Несколько условий

zefir
#ЗДЕСЬ и начинается херня
 ...
if c == "ISO-KF" : # Ладно условие...
    .....
    global P # Глобальная переменная внутри класса уже хреновая идея, но ладно, иногда(ОЧЕНЬ РЕДКО!!!) это оправдано и действительно нужно, но у вас они на каждом шагу, это  явный перебор . И сама переменная нигде кроме как внутри метода не используется.
.....
shapeobj.Shape = P # А что если  c != "ISO-KF" , тогда переменная P не будет создана вот оно вам и говорит что нет такой глобальной переменной.
    ...
zefir
оптимизировать свой говнокод. Было:
это не оптимизация, это тот же говнокод но по другому записан.
zefir
id = 108
id имя встроеной функции, использовать ее для переменной плохая идея.
Авот это вообще за гранью добра и зла
 ######...
	def flange(self,selectedText):
		global k
		k = selectedText
               print (k)
#####...




==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июль 5, 2018 17:08:51)

Офлайн

#5 Июль 5, 2018 17:29:42

zefir
Зарегистрирован: 2018-07-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько условий

Эм…

PEHDOM
, я хотел уменьшить число строк, поэтому назвал “оптимизация”.
PEHDOM
# А что если c != “ISO-KF” , тогда переменная P не будет создана вот оно вам и говорит что нет такой глобальной переменной.
Тестирую именно с ISO-KF

Офлайн

#6 Июль 5, 2018 17:33:06

zefir
Зарегистрирован: 2018-07-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько условий

PEHDOM!!! Дружище, спасибо, я идиот. ISOKF нужно было.

Офлайн

#7 Июль 5, 2018 17:47:54

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Несколько условий

zefir
, я хотел уменьшить число строк, поэтому назвал “оптимизация”
обічно в таких случах использут списки, словари, классы в конце концов вместо туевой хучи if-ов…



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#8 Июль 5, 2018 17:51:05

zefir
Зарегистрирован: 2018-07-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько условий

PEHDOM
обічно в таких случах использут списки, словари, классы в конце концов вместо туевой хучи if-ов…
Я не программист… Я даже не учусь, так приходится работать.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version