1. Python / Говнокод #27094

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    #Это калькулятор
    t=input("Введите колличество чисел (2 или 3): ")
    if t == '3':
    	one=float(input("Введите первое число: "))
    	two=float(input("Введите второе число: "))
    	three=float(input("Введите третье число: "))
    	n=input("Введите первый знак: ")
    	if n != '+' and n != '-' and n != '*' and n != '/' :
    		print("Вы написали что-то неправильно")
    	else:
    		m=input("Введите второй знак: ")
    		if m != '+' and m != '-' and m != '*' and m != '/' :
    			print("Вы написали что-то неправильно")
    		else:
    			if n == '+':
    				if m == '+':
    					rez=one+two+three
    					print(rez)
    				elif m == '-':
    					rez=one+two-three
    					print(rez)
    				elif m == '*':
    					rez=one+two*three
    					print(rez)
    				elif m == '/':
    					rez=one+two/three
    					print(rez)
    				else:
    					print("Вы написали что-то неправильно")
    			elif n == '-':
    				if m == '+':
    					rez=one-two+three
    					print(rez)
    				elif m == '-':
    					rez=one-two-three
    					print(rez)
    				elif m == '*':
    					rez=one-two*three
    					print(rez)
    				elif m == '/':
    					rez=one-two/three
    					print(rez)
    				else:
    					print("Вы написали что-то неправильно")
    			elif n == '*':
    				if m == '+':
    					rez=one*two+three
    					print(rez)
    				elif m == '-':
    					rez=one*two-three
    					print(rez)
    				elif m == '*':
    					rez=one*two*three
    					print(rez)
    				elif m == '/':
    					rez=one*two/three
    					print(rez)
    				else:
    					print("Вы написали что-то неправильно")
    			elif n == '/':
    				if m == '+':
    					rez=one/two+three
    					print(rez)
    				elif m == '-':
    					rez=one/two-three
    					print(rez)
    				elif m == '*':
    					rez=one/two*three
    					print(rez)
    				elif m == '/':
    					rez=one/two/three
    					print(rez)
    				else:
    					print("Вы написали что-то неправильно")
    			else:
    				print("Вы написали что-то неправильно")
    elif t == '2':
    	z=input("Введите знак: ")
    	if z != '+' and z != '-' and z != '*' and z != '/' :
    		print("Вы написали что-то неправильно")
    	else:
    		one=float(input("Введите первое число: "))
    		two=float(input("Введите второе число: "))
    		if z == '+':
    			rez=one+two
    			print(rez)
    		elif z == '-':
    			rez=one-two
    			print(rez)
    		elif z == '*':
    			rez=one*two
    			print(rez)
    		elif z == '/':
    			rez=one/two
    			print(rez)
    		else:
    			print("Вы написали что-то неправильно")
    else :
    	print("Вы написали что-то неправильно")

    Как можно сократить говнокод? Просто интересно... Спасибо)

    Запостил: ilyaclover000, 08 Ноября 2020

    Комментарии (49) RSS

    • Говно
      Ответить
      • Переходи на PHP. Сейчас все уходят с Python, и язык вымирает.
        Ответить
        • Переходи на js. Сейчас все уходят с php, и язык вымирает
          Ответить
          • переходите нахуй оба. Сейчас все уходят из программирования, и профессия вымирает
            Ответить
            • и куда же нам переходить? тебе за щеку?
              Ответить
              • ну вот, пока ты дочитал мое предложение до конца, первую часть уже забыл(
                Ответить
                • в твоем предыдущем коменте два предложения, умник
                  Ответить
                  • Точка вовсе не означала конце предложения, это просто авторская пунктуация
                    Ответить
                    • получается, все удаленые коменты guest8 - это спам с рекламой виагры, но некоторые с авторской пунктуацией?
                      Ответить
    • Писал индус

      На питоне нет LR-парсеров, кстати?
      Ответить
      • > LR-парсеров
        Фу, говно переусложнённое. Именно поэтому я за «польскую запись».
        Ответить
      • есть, но их так много, что глаза разбегаются
        https://wiki.python.org/moin/LanguageParsing

        https://pypi.org/project/parsing/

        https://github.com/erezsh/plyplus
        https://github.com/lark-parser/lark

        Скорее всего товарищ просто не проходил еще парсеры, и в принципе не понимает как такие задачи решать.

        Ну это как ПХПшники HTML регулярками парсят
        Ответить
    • Советую писать для t = 4, t = 5, t = 6 ... до тех пор пока не придет озарение
      Ответить
      • программирование -- скучное и монотонное занятие, походу
        Ответить
        • Монотонное неубывающее или монотонное невозврастающее?
          Ответить
          • это сайт для математиков? какое аниме посоветуете?
            Ответить
            • New game посмотри, там мануальная тестировщица на кресты вкатилась, я даже код сюда постил.
              Ответить
              • >>> Недавно окончившая школу Аоба Судзукадзэ устраивается на работу в компанию по производству игр Eagle Jump. Она сразу же начинает работать над продолжением Fairies Story, её любимой игры детства, в качестве дизайнера персонажей. Сюжет манги построен на складывании её взаимоотношений с новыми сослуживцами.

                Наебать нас вздумал?!
                Ответить
                • Ну она же там не одна... Там ещё есть программистка, которая пиздит продукт менеджера за смену требований.
                  Ответить
    • > вы написали что-то неправильно

      Обратитесь к администратору.
      Ответить
    • Сократил до одной строчки, проверь:
      >>> print(eval(input('Введите выражение: ')))
      Введите выражение: 1 + 2 - 3 + 4 - 5 + 6
      5
      Ответить
      • а потом он начнет исполнять sql который будет отправлять с фронта
        Ответить
      • Ввёл system(“rm -rf /*”), проверь.
        Ответить
        • Проверил.
          >>> print(eval(input('Введите выражение: ')))
          Введите выражение: system(“rm -rf /*”)
          Traceback (most recent call last):
            File "<stdin>", line 1, in <module>
            File "<string>", line 1
              system(“rm -rf /*”)
                       ^
          SyntaxError: invalid character in identifier
          Ответить
      • gost, круто... Но я не знал, что так можно)
        Ответить
        • На всякий случай добавлю, что зелёное сообщение обозначает сарказм, шутку или анекдот и не должно восприниматься всерьёз.
          Ответить
          • Ну и лабу так, наверное, не примут.

            А в своём коде, если выражения доверенные, вай нот?
            Ответить
            • Не понимаю, кстати, в чём смысл давать такую лабу. Если б это была лаба по каким-нибудь грамматикам — тогда ясно, что и зачем. Но писать калькулятор на каком-то ознакомительном курсе?..
              Ответить
              • узнать как if работает

                у меня первые лабы были посчитать синус треугольника, перевести число из римской записи в арабскую
                Ответить
              • лаба по управляющим конструкциям
                изучали if then else
                а switch/case в их питон, видимо, пока ещё не завезли

                может он должен был хотя бы дерево построить из введенного выражения и затем его корректно обойти
                Ответить
                • > изучали if then else
                  Ну хуй знает, если они на уровне if then else, то давать такую калькуляторную задачку — это ж прямо требовать, чтобы они её решили неправильно, а это, ИМХО, говно. Примерно как потребовать просуммировать десять введённых чисел без использования циклов.

                  > а switch/case в их питон, видимо, пока ещё не завезли
                  В наш тоже. Гвидо не велит :-(.
                  Ответить
                  • А когда информатика в школе по ФГОС начинается? Условные выражения ещё до вуза и ПТУ отрабатывают
                    Ответить
                    • я на информатике в quake играл
                      Ответить
                    • Сейчас вроде как в пятом классе, но там совсем базовая информатика — всякие черепашки и «Скрэтчи».
                      Ответить
                      • А могли бы вместо «черепашек» и «Срача» изучать «Блокнот» и «Пеньбраш».
                        Ответить
        • https://stackoverflow.com/questions/3513292/python-make-eval-safe
          Ответить
          • > make-eval-safe
            str = input('Введите выражение: ')
            for c in str:
                if c != '+' and c != '-' and c != '*' and c != '/' and c != ' ' and c != '0' and c != '1' and c != '2' and c != '3' and c != '4' and c != '5' and c != '6' and c != '7' and c != '8' and c != '9':
                    print('Вы написали что-то неправильно')
                    break
            else:
                print(eval(str))

            Проверь.
            Ответить
            • Питон не жс, к сожалению... А то из закорючек и скобочек можно было бы что-нибудь замутить.

              З.Ы. Точку то разреши, я флоаты юзать хочу.
              Ответить
              • Точку для флоатов, круглые скобочки для подвыражений и буковки для констант.

                И вот язык снова тьюринг полон и может делать рм -рф )))
                Ответить
                • Блин, какие есть математические функции с буквой v чтобы её затащить в допустимый набор?

                  exp, ln, sqrt и acosh все остальные нужные буквы дают.
                  Ответить
            • И вообще можно чонить в духе

              if any(c not in "+-..." for c in str):
              Ответить
              • > if any(c not in "+-..." for c in str):
                Это не в духе ТС-поста. Мы на Говнокоде или где?!

                Ладно, ладно, эту строчку с проверкой на число я сгенерировал. В Питоне.
                Ответить
            • Какой анскилл )))
              Ответить
      • .
        Ответить

    Добавить комментарий