Как мне реорганизовать этот код, чтобы сделать его короче?

#python-3.x #reduction

#python-3.x #сокращение

Вопрос:

 import math
def roundup(x):
return int(math.ceil(x / 10.0)) * 10
w=0
while w == 5:
print("Would you like to *work out* a missing letter in a GTIN-8 code, or *check* a code?")
response = input(":")
if response == 'work out':
    print("Input a 7 digit GTIN-8 code and I'll work out the 8th")
    c1 = int(input("Enter FIRST number: "))
    c2 = int(input("Enter SECOND number: "))
    c3 = int(input("Enter THIRD number: "))
    c4 = int(input("Enter FOURTH number: "))
    c5 = int(input("Enter FIFTH number: "))
    c6 = int(input("Enter SIXTH number: "))
    c7 = int(input("Enter SEVENTH number: "))

    y = (c1*3 c2 c3*3 c4 c5*3 c6 c7*3)
    ru2=roundup(y)
    GTIN8 = ru2-y
    print("Your GTIN8 Code would be: " str(c1) str(c2) str(c3) str(c4) str(c5) str(c6) str(c7) str(GTIN8))
    print("Wanna work out another?") 
if response == 'check':
    print("Input a 8 digit GTIN-8 code and I'll check if it's correct")
c1 = int(input("Enter FIRST number: "))
c2 = int(input("Enter SECOND number: "))
c3 = int(input("Enter THIRD number: "))
c4 = int(input("Enter FOURTH number: "))
c5 = int(input("Enter FIFTH number: "))
c6 = int(input("Enter SIXTH number: "))
c7 = int(input("Enter SEVENTH number: "))
c8 = int(input("Enter EIGTH number: "))
y = (c1*3 c2 c3*3 c4 c5*3 c6 c7*3)
ru2=roundup(y)
GTIN8 = ru2-y
if GTIN8 != c8:
    print("Nope that product code is incorrect!")
    reply=input("Want to know the correct answer to your code? Type yes if so: ")
if reply == 'yes':
    print("The correct answer would have been: " str(GTIN8))
if GTIN8 == c8:
    print("That code is correct!")
  

Проблема в том, что я снова и снова пытался уменьшить этот код.

Даже путем ввода ‘response’ в виде строки, чтобы позволить пользователю вводить код за один раз.

Если вы еще не могли сказать, это код для кода продукта GTIN-8, и я знаю, что существуют различные другие коды GTIN-8, но я просто не мог этого сделать, не говоря уже о копировании.

Комментарии:

1. Функционирующий код, который вы хотите улучшить, можно отправить в stackexchange для проверки кода

2. создайте функцию для ввода ваших 7 чисел, затем повторно используйте эту функцию для обоих случаев. для того, для которого потребуется 8-й ввод, либо сохраните строку, которая у вас есть сейчас, либо попросите вашу функцию принять bool, который указывает, нужно ли запрашивать 8. затем вы можете вернуть список со всеми вашими значениями.

3. Я предлагаю вам задать вопрос на codereview.stackexchange.com

Ответ №1:

Чтобы вы начали, вот один простой способ уменьшить количество строк

 c = [int(x) for x in input("Input a 8 digit GTIN-8 code and I'll check if it's correct").split("")]
  

Теперь вы можете получить доступ к каждому символу с c[n] помощью .