1

Тема: Прокритикуйте код

ось

2 Востаннє редагувалося koala (21.01.2018 17:09:03)

Re: Прокритикуйте код

Після вибору файлу треба натиснути ще "add file".
А якщо це код, то викладайте його прямо в тексті, в теґу code (кнопка <> над полем редагування). Якщо довгий - то додавайте ще spoiler (кнопка S).

3

Re: Прокритикуйте код

def centre():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo5w5W4AAлTLl.jpeg")
 
    fask=input ("куда идём?")
    if fask=="вправо":
        b()
    elif fask=="вверх":
        a()
    elif fask=="вниз":
        c()
    else :
        print ("нету такого")
        
def a():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo5w5W4AATLl.jpeg")
    k=input ("куда идём?")
    if k=="влево":
        g()
    elif k=="вверх":
        j()
    elif k=="вниз":
        centre()
    else :
        print ("нету такого")
 
def b():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlLl-к.jpeg")
    task=input ("куда идём?")
    if task=="влево":
        centre()
    else :
        print ("нету такого")
        
def c():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-пя.jpeg")
    rask=input ("куда идём?")
    if rask=="влево":
        d()
    elif rask=="вверх":
        central()
    elif rask=="вниз":
        k()
    else :
        print ("нету такого")
        
 
def g():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        a()
    elif fask=="влево":
        f()
    else :
        print ("нету такого")
        
def d():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-пія.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        c()
    else :
        print ("нету такого")
 
def f():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo5w5W4AAлlTLl.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        g()
    elif fask=="вниз":
        e()
    else :
        print ("нету такого")
 
def e():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTg5W4AAлlTLl.jpeg")
    fask=input ("куда идём?")
    if fask=="вверх":
        f()
    else :
        print ("нету такого")
        
def k():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-я.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        l()
    elif fask=="вверх":
        c()
    else :
        print ("нету такого")
 
def l():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-.jpeg")
    fask=input ("куда идём?")
    if fask=="влево":
        k()
    else :
        print ("нету такого")
    
 
def j():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-копя.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        s()
    elif fask =="вниз":
        a()
    else:
        print ("нету такого")
 
def s():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-коя.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        i()
    elif fask=="влево":
        j()
    else:
        print ("нету такого")
 
def i():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-ко.jpeg")
    fask=input ("куда идём?")
    if fask=="влево":
        s()
    elif fask=="вниз":
        h()
    else :
        print ("нету такого")
 
def h():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-к.jpeg")
    if fask=="вверх":
        i()
    else :
        print ("нету такого")
print ('loading...')
print ("управление:слова \"вверх,вниз,вправо,влево")
centre()   
Подякували: 0xDADA11C71

4

Re: Прокритикуйте код

demyshka2005 написав:
def centre():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo5w5W4AAлTLl.jpeg")
 
    fask=input ("куда идём?")
    if fask=="вправо":
        b()
    elif fask=="вверх":
        a()
    elif fask=="вниз":
        c()
    else :
        print ("нету такого")
        
def a():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo5w5W4AATLl.jpeg")
    k=input ("куда идём?")
    if k=="влево":
        g()
    elif k=="вверх":
        j()
    elif k=="вниз":
        centre()
    else :
        print ("нету такого")
 
def b():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlLl-к.jpeg")
    task=input ("куда идём?")
    if task=="влево":
        centre()
    else :
        print ("нету такого")
        
def c():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-пя.jpeg")
    rask=input ("куда идём?")
    if rask=="влево":
        d()
    elif rask=="вверх":
        central()
    elif rask=="вниз":
        k()
    else :
        print ("нету такого")
        
 
def g():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        a()
    elif fask=="влево":
        f()
    else :
        print ("нету такого")
        
def d():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-пія.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        c()
    else :
        print ("нету такого")
 
def f():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo5w5W4AAлlTLl.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        g()
    elif fask=="вниз":
        e()
    else :
        print ("нету такого")
 
def e():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTg5W4AAлlTLl.jpeg")
    fask=input ("куда идём?")
    if fask=="вверх":
        f()
    else :
        print ("нету такого")
        
def k():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-я.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        l()
    elif fask=="вверх":
        c()
    else :
        print ("нету такого")
 
def l():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-.jpeg")
    fask=input ("куда идём?")
    if fask=="влево":
        k()
    else :
        print ("нету такого")
    
 
def j():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-копя.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        s()
    elif fask =="вниз":
        a()
    else:
        print ("нету такого")
 
def s():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-коя.jpeg")
    fask=input ("куда идём?")
    if fask=="вправо":
        i()
    elif fask=="влево":
        j()
    else:
        print ("нету такого")
 
def i():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-ко.jpeg")
    fask=input ("куда идём?")
    if fask=="влево":
        s()
    elif fask=="вниз":
        h()
    else :
        print ("нету такого")
 
def h():
    import webbrowser
    webbrowser.open(r"http://dtckids.com.ua/dementiy/wp-content/uploads/2018/01/DTgo55W4AAлlTLl-к.jpeg")
    if fask=="вверх":
        i()
    else :
        print ("нету такого")
print ('loading...')
print ("управление:слова \"вверх,вниз,вправо,влево")
centre()   

Я погано розбираюся в Python (хоча це єдина мова програмування яку я знаю), але дещо сказати можу. По-перше  між якимось текстом і == (і взагалі будь-яким матем символом) бажано робити відступи. Це спрощує читання коду. По-друге мені здається, що застосовувати ваші створені функції при створенні нової функції - це неправильно. Це скоріш за все зменшує швидкість виконання коду і (в цьому я впевнений) в рази зменшує читабельність вашого коду. Я б рекомендував об'єднати всі функції у кінці, або зробити функцію в кінці, яка б об'єднувала б всі попередні (але по-моєму перший варіант все-таки кращий) і тоді її запустити, ніж так як ви...
Ну і не подобається, що присутня рос м, хоча це ваше особисте діло. Правила форуму ви виконуєте.
Можливо, я десь помиляюся.

5

Re: Прокритикуйте код

0. Немає завдання; невідомо, чи програма працює правильно, якщо невідомо, як саме "правильно" вона має працювати.
1. Програма спілкується болгарською(?) мовою.
2. Назви функцій абсолютно безглузді.
3. Дуже багато повторів - порівнянь із однаковими рядками.
4. Одна бібліотека (webbrowser) імпортується багато разів.

6

Re: Прокритикуйте код

koala написав:

Назви функцій абсолютно безглузді.

Я теж хотів сказати, але поки дійшов то вже забув :)

koala написав:

Одна бібліотека (webbrowser) імпортується багато разів.

Ви рекомендуєте demyshka2005 імпортувати одразу всю бібліотеку (надіюсь ви зрозуміли, що я маю на увазі, бо я щось не знаю як пояснити), щоб не повторювати імпорт кожного разу?(мені просто цікаво, можливо, пригодиться при написанні свого коду)

7

Re: Прокритикуйте код

Eff1c написав:
koala написав:

Назви функцій абсолютно безглузді.

Я теж хотів сказати, але поки дійшов то вже забув :)

koala написав:

Одна бібліотека (webbrowser) імпортується багато разів.

Ви рекомендуєте demyshka2005 імпортувати одразу всю бібліотеку (надіюсь ви зрозуміли, що я маю на увазі, бо я щось не знаю як пояснити), щоб не повторювати імпорт кожного разу?(мені просто цікаво, можливо, пригодиться при написанні свого коду)

так, один раз імпортувати і все

Подякували: Eff1c1

8

Re: Прокритикуйте код

Так. Загальна практика - імпортувати залежності один раз на початку файлу. Звісно, можна і інакше, але це може створювати незручності через невизначеність, чи доступні вже потрібні класи та функції, чи ні. Ну і сам імпорт - не дуже швидка операція.

Подякували: Eff1c1

9

Re: Прокритикуйте код

Ну і взагалі використання браузера - це... щонайменше overkill.

10

Re: Прокритикуйте код

koala написав:

Ну і взагалі використання браузера - це... щонайменше overkill.

Чому? В професійних проектах і прогах браузер не використовується?

11

Re: Прокритикуйте код

# координати ідуть: спершу вертикальна (y), потім горизонтальна (x)
# координата y зростає вниз

maze =["XXXXXXX",
       "XXX___X",
       "X___X_X",
       "X_X__XX",
       "XX__XXX",
       "XXX__XX"]
pos_x = 3
pos_y = 3

def text_draw():
    print('-'*len(maze[0]))
    for y,line in enumerate(maze):
        if y!=pos_y:
            print(line)
        else:
            print(line[:pos_x]+'H'+line[pos_x+1:])
    print('-'*len(maze[0]),end=' ')

while True:
    text_draw()
    step = input('UDLR: ')
    if step.lower() in ('up','u'):
        if maze[pos_y-1][pos_x]!='X':
            pos_y -= 1
    elif step.lower() in ('down','d'):
        if maze[pos_y+1][pos_x]!='X':
            pos_y += 1    
    elif step.lower() in ('left','l'):
        if maze[pos_y][pos_x-1]!='X':
            pos_x -= 1
    elif step.lower() in ('right','r'):
        if maze[pos_y][pos_x+1]!='X':
            pos_x += 1
    else:
        break

і дуже раджу зав'язувати з рос. мовою. Якщо в школі змушують вчити, що робив ліцеїст Пушкін із малюнками петербурзьких красунь, то це ще не привід повторювати його сміливі досліди з язьіком.

Подякували: ping1

12

Re: Прокритикуйте код

Чи навіть так:

# координати ідуть: спершу вертикальна (y), потім горизонтальна (x)
# координата y зростає вниз
maze =["XXXXXXX",
       "XXX___X",
       "X___X_X",
       "X_X__XX",
       "XX__XXX",
       "XXX__XX"]

class Point:
    def __init__(self,x,y):
        self.x = x
        self.y = y
    def __add__(self,other):
        return Point(self.x+other.x,self.y+other.y)
    def is_valid(self):
        return maze[self.y][self.x]!='X'    

shift = {'u':Point( 0,-1),
         'd':Point( 0, 1),
         'l':Point(-1, 0),
         'r':Point( 1, 0)}

pos = Point(3,3)
        

def text_draw():
    print('-'*len(maze[0]))
    for y,line in enumerate(maze):
        if y!=pos.y:
            print(line)
        else:
            print(line[:pos.x]+'H'+line[pos.x+1:])
    print('-'*len(maze[0]),end=' ')

try:
    while True:
        text_draw()
        step = input('UDLR: ').lower()
        if len(step)>1 and not step in ['up','down','left','right']:
            raise KeyError
        new_pos = pos + shift[step[0]]
        if new_pos.is_valid():
            print('Going',step)
            pos = new_pos
        else:
            print('Wall found!')
except:
    print('Bye!')

13

Re: Прокритикуйте код

і дуже раджу зав'язувати з рос. мовою. Якщо в школі змушують вчити, що робив ліцеїст Пушкін із малюнками петербурзьких красунь, то це ще не привід повторювати його сміливі досліди з язьіком.

це так ,просто я живу в російськомовній сім'ї.
та планую зробити гру на трьох мовах.
А ще я десь два місяці взагалі вчу пайтон.

14 Востаннє редагувалося Eff1c (25.01.2018 18:46:52)

Re: Прокритикуйте код

demyshka2005 написав:

і дуже раджу зав'язувати з рос. мовою. Якщо в школі змушують вчити, що робив ліцеїст Пушкін із малюнками петербурзьких красунь, то це ще не привід повторювати його сміливі досліди з язьіком.

це так ,просто я живу в російськомовній сім'ї.
та планую зробити гру на трьох мовах.
А ще я десь два місяці взагалі вчу пайтон.

Якщо врахувати те, що ви так мало вивчаєте python. Я, якщо сумарно (бо був період коли зникла мотивація), вчу python вже місяці 3 - 3,5, то не набагато краще знаю його за вас.
Доречі я тут напарника для спільного вивчення шукаю... Не хочете разом зі мною вивчати python? http://replace.org.ua/topic/8979/