Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用for循环时在python中获取类型错误_Python_Python 3.x_Isbn_Check Digit - Fatal编程技术网

使用for循环时在python中获取类型错误

使用for循环时在python中获取类型错误,python,python-3.x,isbn,check-digit,Python,Python 3.x,Isbn,Check Digit,我相信这对你们来说是一个非常基本的问题,但我正在为我的计算课制作一个ISBN校验数字计算器。我目前的代码是: isbn = [] results = [] print("Please input your ISBN 1 number at a time") def isbn_input(): isbn.append(int(input("ISBN character 1: "))) isbn.append(int(input("ISBN character 2: ")))

我相信这对你们来说是一个非常基本的问题,但我正在为我的计算课制作一个ISBN校验数字计算器。我目前的代码是:

isbn = []
results = []

print("Please input your ISBN 1 number at a time")

def isbn_input():
    isbn.append(int(input("ISBN character 1: ")))
    isbn.append(int(input("ISBN character 2: ")))
    isbn.append(int(input("ISBN character 3: ")))
    isbn.append(int(input("ISBN character 4: ")))
    isbn.append(int(input("ISBN character 5: ")))
    isbn.append(int(input("ISBN character 6: ")))
    isbn.append(int(input("ISBN character 7: ")))
    isbn.append(int(input("ISBN character 8: ")))
    isbn.append(int(input("ISBN character 9: ")))
    isbn.append(int(input("ISBN character 10: ")))

isbn_input()

results.append(isbn[0] * 11)
results.append(isbn[1] * 10)
results.append(isbn[2] * 9)
results.append(isbn[3] * 8)
results.append(isbn[4] * 7)
results.append(isbn[5] * 6)
results.append(isbn[6] * 5)
results.append(isbn[7] * 4)
results.append(isbn[8] * 3)
results.append(isbn[9] * 2)

results = sum(results)
results = results % 11
results = 11 - results
print("Your ISBN is'",
      isbn[0],isbn[1],isbn[2],isbn[3],
      isbn[4],isbn[5],isbn[6],isbn[7],
      isbn[8],isbn[9],results,"'")
我知道这是一种非常低效的方法,你可能会看着它哭

为了提高效率,我做的第一件事就是使用for循环。所以,我改变了:

def isbn_input():
    isbn.append(int(input("ISBN character 1: ")))
    isbn.append(int(input("ISBN character 2: ")))
    isbn.append(int(input("ISBN character 3: ")))
    isbn.append(int(input("ISBN character 4: ")))
    isbn.append(int(input("ISBN character 5: ")))
    isbn.append(int(input("ISBN character 6: ")))
    isbn.append(int(input("ISBN character 7: ")))
    isbn.append(int(input("ISBN character 8: ")))
    isbn.append(int(input("ISBN character 9: ")))
    isbn.append(int(input("ISBN character 10: ")))
到一个列表,但我还没有想出如何做到这一点。这是我需要帮助的地方(而且,我知道这个函数是没有意义的。我们的老师要求我们有一个,但是如果有人能找到更好的方法,那也太神奇了)

非常感谢你的帮助。再说一次,如果你发现了什么可以做得更好的,那就请做吧。(另外,这是python 3。)

要简化输入:

isbn = [int(input("ISBN character {0}: ".format(i))) 
        for i in range(1, 11)] # or 'format(i+1)' and 'range(10)'
这使用一个循环来同时循环和构建整数列表

或者,一次获取整个输入并将其转换为单个整数:

isbn = list(map(int, input("Enter ISBN: ")))
此处应用
int()
依次转换
输入
字符串中的每个字符。

简化输入:

isbn = [int(input("ISBN character {0}: ".format(i))) 
        for i in range(1, 11)] # or 'format(i+1)' and 'range(10)'
这使用一个循环来同时循环和构建整数列表

或者,一次获取整个输入并将其转换为单个整数:

isbn = list(map(int, input("Enter ISBN: ")))
此处应用
int()
依次转换
输入
字符串中的每个字符。

简化输入:

isbn = [int(input("ISBN character {0}: ".format(i))) 
        for i in range(1, 11)] # or 'format(i+1)' and 'range(10)'
这使用一个循环来同时循环和构建整数列表

或者,一次获取整个输入并将其转换为单个整数:

isbn = list(map(int, input("Enter ISBN: ")))
此处应用
int()
依次转换
输入
字符串中的每个字符。

简化输入:

isbn = [int(input("ISBN character {0}: ".format(i))) 
        for i in range(1, 11)] # or 'format(i+1)' and 'range(10)'
这使用一个循环来同时循环和构建整数列表

或者,一次获取整个输入并将其转换为单个整数:

isbn = list(map(int, input("Enter ISBN: ")))

这里应用
int()
依次转换
输入
字符串中的每个字符。

一个简单的
输入循环是

for i in range(1, 11):
    isbn.append(int(input("ISBN character " + str(i) + ":")))
要同时阅读所有内容,你可以

isbninput = input("ISBN: ")

if len(isbninput) != 10:
    raise Exception("wrong number of digits")

for digit in isbninput:
   isbn.append(int(digit))
Python非常棒,它有更简洁的方法来编写这些简单的循环。请参见jonrsharpe的答案。如果您仍然是初学者,并且不完全理解那些更复杂的语法结构是如何工作的,那么您应该做两件事:

  • 更喜欢在睡梦中编写和阅读的代码,以及您觉得更美观的代码
  • 学习如何使用它们。他们太棒了

    • 一个简单的
      输入循环是

      for i in range(1, 11):
          isbn.append(int(input("ISBN character " + str(i) + ":")))
      
      要同时阅读所有内容,你可以

      isbninput = input("ISBN: ")
      
      if len(isbninput) != 10:
          raise Exception("wrong number of digits")
      
      for digit in isbninput:
         isbn.append(int(digit))
      
      Python非常棒,它有更简洁的方法来编写这些简单的循环。请参见jonrsharpe的答案。如果您仍然是初学者,并且不完全理解那些更复杂的语法结构是如何工作的,那么您应该做两件事:

      • 更喜欢在睡梦中编写和阅读的代码,以及您觉得更美观的代码
      • 学习如何使用它们。他们太棒了

        • 一个简单的
          输入循环是

          for i in range(1, 11):
              isbn.append(int(input("ISBN character " + str(i) + ":")))
          
          要同时阅读所有内容,你可以

          isbninput = input("ISBN: ")
          
          if len(isbninput) != 10:
              raise Exception("wrong number of digits")
          
          for digit in isbninput:
             isbn.append(int(digit))
          
          Python非常棒,它有更简洁的方法来编写这些简单的循环。请参见jonrsharpe的答案。如果您仍然是初学者,并且不完全理解那些更复杂的语法结构是如何工作的,那么您应该做两件事:

          • 更喜欢在睡梦中编写和阅读的代码,以及您觉得更美观的代码
          • 学习如何使用它们。他们太棒了

            • 一个简单的
              输入循环是

              for i in range(1, 11):
                  isbn.append(int(input("ISBN character " + str(i) + ":")))
              
              要同时阅读所有内容,你可以

              isbninput = input("ISBN: ")
              
              if len(isbninput) != 10:
                  raise Exception("wrong number of digits")
              
              for digit in isbninput:
                 isbn.append(int(digit))
              
              Python非常棒,它有更简洁的方法来编写这些简单的循环。请参见jonrsharpe的答案。如果您仍然是初学者,并且不完全理解那些更复杂的语法结构是如何工作的,那么您应该做两件事:

              • 更喜欢在睡梦中编写和阅读的代码,以及您觉得更美观的代码
              • 学习如何使用它们。他们太棒了


              类型错误在哪里?显示生成错误的代码,并显示对所述错误的完整回溯。@mhlester:Here:
              isbn[0]*11
              。调用
              int(isbn[0])
              @szieberthdam在添加到isbn列表之前,他已经将输入转换为int了,类型错误在哪里?显示生成错误的代码,并显示对所述错误的完整回溯。@mhlester:Here:
              isbn[0]*11
              。调用
              int(isbn[0])
              @szieberthdam在添加到isbn列表之前,他已经将输入转换为int了,类型错误在哪里?显示生成错误的代码,并显示对所述错误的完整回溯。@mhlester:Here:
              isbn[0]*11
              。调用
              int(isbn[0])
              @szieberthdam在添加到isbn列表之前,他已经将输入转换为int了,类型错误在哪里?显示生成错误的代码,并显示对所述错误的完整回溯。@mhlester:Here:
              isbn[0]*11
              。调用
              int(isbn[0])
              @szieberthdam在添加到isbn列表之前,他已经将输入转换为int了这些都是非常高级的概念。。。您应该添加一些关于列表理解和
              map
              的说明。非常感谢,注释部分特别有用,因此感谢您为此投入额外的时间!现在效果很好。这些都是非常先进的概念。。。您应该添加一些关于列表理解和
              map
              的说明。非常感谢,注释部分特别有用,因此感谢您为此投入额外的时间!现在效果很好。这些都是非常先进的概念。。。您应该添加一些关于列表理解和
              map
              的说明。非常感谢,注释部分特别有用,因此感谢您抽出额外时间提供帮助