【问题标题】:If len Statementif len 语句
【发布时间】:2016-10-25 10:46:51
【问题描述】:

我输入七位数字以计算出 gtin-8 产品代码。但是,如果我输入的数字超过七位,if 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:

【问题讨论】:

  • 为什么您的程序设置为一次输入一个数字?为什么不直接输入整个代码
  • 当然不会,因为每次 input() 调用,无论您输入什么(甚至是 8、3、2、1),例如都被解释为 1 件事。这是字符串类型。
  • 如果您打算一次输入一个数字,您还应该检查每个数字都是一个数字。或者,让用户输入一个数字,然后检查它是< 10000000

标签: python if-statement variable-length-array


【解决方案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-statement 始终是 True

列表和元组的区别请看这个问题here

【讨论】:

    【解决方案2】:

    你的 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
    

    【讨论】:

      【解决方案3】:

      我会做以下事情:

      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(",")]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-06
        • 2016-03-26
        • 1970-01-01
        • 2016-03-02
        • 2016-02-29
        相关资源
        最近更新 更多