Как я могу исправить ошибку типа: объект ‘int’ не может быть повторен

#python

Вопрос:

Вот мой код:

 def main():  number = None   quit = False  while(not quit):  choice = getSelection()  if(choice == 'G'): # get a number  number = getANumber()  elif(choice == 'S'): # current sum  currSum(number)  elif(choice == 'A'): # current avg  currAvg(number)  elif(choice == 'H'): # highest number  currHighest(number)  elif(choice == 'L'): # lowest number  currLowest(number)  elif(choice == 'Q'): # quit   print('Thanks for using the program!')  quit = True  pause()  else:  print('Invalid selection. Pick only from the menu.')  pause()   def displayMenu():  print("n"*50, "=== The Menu ===")  print("G] Get a number")  print("S] Display current sum")  print("A] Display current average")  print("H] Display the current highest number")  print("L] Display the current lowest number")  print("Q] Quit")  print("n" * 2)  def getSelection():  displayMenu()  result = input("Enter your selection: ")  return result  def getANumber():  result = int(input("Enter a number, please: "))  return result   def currSum(num):  if(num is None):  print("Go back and enter a number first...")  pause()  return   print("The current sum is: ", sum(num))  pause()  def currAvg(num):  if(num is None):  print("Go back and enter a number first...")  pause()  return  avg = sum(num) / len(num)  print("The current avgerage is: ", round(avg,2) )  pause()  def currHighest(num):  if(num is None):  print("Go back and enter a number first...")  pause()  return  print("The current highest is: ", max(num))  pause()  def currLowest(num):  if(num is None):  print("Go back and enter a number first...")  pause()  return    print("The current lowest is: ", min(num)  pause()  def pause():  x = input("npress any key to continue....n")    main()  

Ошибка:

 Traceback (most recent call last):  File "d:pythonProjectweek11menuFuncc.py", line 85, in lt;modulegt;  main()  File "d:pythonProjectweek11menuFuncc.py", line 10, in main  currSum(number)  File "d:pythonProjectweek11menuFuncc.py", line 51, in currSum  print("The current sum is: ", sum(num)) TypeError: 'int' object is not iterable  

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

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

1. вероятно, происходит по адресу sum(num) . Что это должно сделать? если вы вводите номер внутри

2. num это одно число. Нет смысла звонить sum() по одному номеру.

3. @Mahrkeenerh Предполагалось суммировать числа, как только «S» будет набрано с числом, хранящим несколько чисел в списке.

4. вы все время переписываете номер, это не список

5. и если вы хотите сделать это без списков (которые вы должны делать), вы должны отслеживать число, сумму, а также количество чисел, которые уже были введены , таким образом, вам не нужно использовать sum() avg() или что-то в этом роде

Ответ №1:

проблема в том , что функции, которые вы используете, такие как sum (), avg() и т.д., Не работают с одним целым числом.

Функция sum() возвращает число, сумму всех элементов в повторяемом.

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

Кроме того, зная тот факт, что ваш профессор запретил вам использовать этот список, это означает (на мой взгляд), что он/она также хочет, чтобы вы вручную рассчитали необходимый материал для повышения ваших навыков программирования.

Я исправил ваш код ниже:

 def main():   global cur_sum  global no_of_digits  global highest_num  global lowest_num   cur_sum = 0  no_of_digits = 0   number = None   quit = False  while (not quit):  choice = getSelection()  if (choice == 'G'): # get a number   number = getANumber()  no_of_digits  = 1  cur_sum  = number   if no_of_digits == 1:  highest_num = number  lowest_num = number  prev_number = number   if number gt; prev_number:  highest_num = number   elif number lt; prev_number:  lowest_num = number   prev_number = number   elif (choice == 'S'): # current sum  currSum(number)  elif(choice == 'A'): # current avg  currAvg(number)  elif(choice == 'H'): # highest number  currHighest(number)  elif(choice == 'L'): # lowest number  currLowest(number)  elif(choice == 'Q'): # quit  print('Thanks for using the program!')  quit = True  pause()  else:  print('Invalid selection. Pick only from the menu.')  pause()   def displayMenu():  print("n" * 50, "=== The Menu ===")  print("G] Get a number")  print("S] Display current sum")  print("A] Display current average")  print("H] Display the current highest number")  print("L] Display the current lowest number")  print("Q] Quit")  print("n" * 2)   def getSelection():  displayMenu()  result = input("Enter your selection: ")  return result   def getANumber():  result = int(input("Enter a number, please: "))  return result   def currSum(num):  if (num is None):  print("Go back and enter a number first...")  pause()   else:  print("The current sum is: ", cur_sum)  pause()  def currAvg(num):  if (num is None):  print("Go back and enter a number first...")  pause()  return   avg = cur_sum/no_of_digits   print("The current avgerage is: ", round(avg, 2))  pause()   def currHighest(num):  if (num is None):  print("Go back and enter a number first...")  pause()   print("The current highest is: ", highest_num)  pause()   def currLowest(num):  if (num is None):  print("Go back and enter a number first...")  pause()   print("The current lowest is: ", lowest_num)  pause()   def pause():  x = input("npress any key to continue....n")   main()  

Две вещи, которые я сделал не так, как ты :

  1. объявил переменные глобальными перед кодом, чтобы я мог получить к ним доступ в любом месте программы.
  2. вручную рассчитал сумму , среднее , наибольшее и наименьшее числа.

Кроме того, ваш код был хорош в целом, за исключением незначительной ошибки, о которой я говорил выше 🙂

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

1. Большое спасибо, я не думал об использовании глобальных переменных, и теперь ваш способ действительно имеет смысл использовать ручные вычисления!