2016-06-23 4 views
-1

Я печатаю семь цифр, чтобы иметь возможность выработать код продукта gtin-8. Но если я напечатаю более семи цифр, оператор if len должен признать, что я набрал более семи цифр, но это не так. Я попытался поместить это в переменную, но это тоже не сработало ... Любая помощь будет оценена! Это мой код ........Если инструкция len

gtin1 = int(input("Enter your first digit... ")) 
gtin2 = int(input("Enter your second digit... ")) 
gtin3 = int(input("Enter your third digit... ")) 
gtin4 = int(input("Enter your fourth digit... ")) 
gtin5 = int(input("Enter your fifth digit... ")) 
gtin6 = int(input("Enter your sixth digit... ")) 
gtin7 = int(input("Enter your seventh digit... ")) 

gtin_join = (gtin1, gtin2, gtin3, gtin4, gtin5, gtin6, gtin7) 

if len(gtin_join) == 7: 
+2

Почему у вас есть настройки программы, чтобы ввести одну цифру в то время? Почему бы вам просто не ввести полный код – Keatinge

+0

, конечно, это не так, поскольку каждый вызов input(), независимо от того, что вы вводите (даже 8,3,2,1), например, интерпретируется как 1 вещь. Это строка типа. –

+0

Если вы собираетесь вводить по одному номеру одновременно, вы также должны проверить каждую цифру. В качестве альтернативы, попросите пользователя ввести один номер и просто проверьте его '<10000000'. – jonrsharpe

ответ

1

То, что вы, вероятно, хотите сделать что-то вроде этого (заметьте, что я использую список здесь):

ls = [] 
while len(ls) < 7: 
    try: #always check the input 
     num = int(input("Enter your {0} digit:".format(len(ls)+1))) 
     ls.append(num) 
    except: 
     print("Input couldn't be converted!") 

print(ls) #ls now has 7 elements 

Ваш созданный кортеж всегда имеет длину 7, поэтому ваш if-статус всегда оказывается True.

За разницу между списком и кортежем см. Этот вопрос here.

+0

Комментарий от disliker будет замечательным ... –

-1

Ваш gtin_join является кортежем, и если вы хотите список, вы должны использовать квадратные скобки. Вы можете проверить тип переменных в этом примере:

gtin1 = int(input("Enter your first digit... ")) 
gtin2 = int(input("Enter your second digit... ")) 
gtin3 = int(input("Enter your third digit... ")) 
gtin4 = int(input("Enter your fourth digit... ")) 
gtin5 = int(input("Enter your fifth digit... ")) 
gtin6 = int(input("Enter your sixth digit... ")) 
gtin7 = int(input("Enter your seventh digit... ")) 

gtin_join = (gtin1, gtin2, gtin3, gtin4, gtin5, gtin6, gtin7) 

print(type(gtin_join)) 

gtin_join = [gtin1, gtin2, gtin3, gtin4, gtin5, gtin6, gtin7] 

print(type(gtin_join)) 

if len(gtin_join) == 7: 
    print 7 
-1

Я хотел бы сделать следующее:

gtin_list = [] 
while len(gtin_list) != 7: 
    gtin = input("Please enter all 7 digits separated by commas...") 
    gtin_list = [int(x) for x in gtin.split(",")]