获取要在菜单中显示的列表长度

2024-09-30 08:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个助手,我把乘客添加到公共汽车上,显示所有年龄的总和,平均年龄,并找到最年长的乘客。我想在菜单上显示乘客人数,但我无法解决这个问题。我试图使用number_of_passengers = len(passengers),但它在菜单中说number_of_passengers没有定义。我将在这里添加整个代码,如果有人对如何使这个函数工作有任何建议,我将不胜感激。我想让它做的是:

  • 每次添加或删除新乘客时,变量number_of_passengers都会更改为实际数量
  • 在欢迎信息之后,我希望它说“目前的乘客人数是…”

代码如下:

#imports to support the menu systems
import replit
from getkey import getkey, keys

#MENU FUNCTIONS : these are the functions used for the menu

#menuOptions 0
def add_passenger(passengers):
  replit.clear()
  passenger_age = int(input("How old is the passenger you wish to add? "))
  print (passenger_age)
  passengers.append(passenger_age)

#menuOptions 1
def print_bus(passengers):
  replit.clear()
  print("The age of the passengers on the bus are:")
  print(*passengers, sep = ", ")
  input("Press enter to go back")

#menuOptions 2
def calc_total_age(passengers):
  replit.clear()
  total_age = sum(passengers)
  print("The total age of all passengers is " + str(total_age) + " years")
  input("Press enter to go back")

#menuOptions 3
def calc_average_age(passengers):
  replit.clear()
  average_age = sum(passengers) / len(passengers)
  round(average_age,2)
  print("The average age of all passengers is " + str(average_age) + " years")
  input("Press enter to go back")

#menuOptions 4
def max_age(passengers):
  replit.clear()
  eldest = max(passengers)
  print("The passenger with the highest age on the bus is " + str(eldest) + " years old")
  input("Press enter to go back")

#menuOptions 5
def find_age(passengers):
  replit.clear()
  min = input("What is the youngest age you wish to find? ")
  max = input("What is the oldest age you wish to find? ")
  for x in passengers:
    if x > int(min) and x < int(max):
      print (x)
  input("Press enter to go back")

#menuOptions 6
def sort_buss(passengers):
  replit.clear()
  print("The age of the passengers in ascending order are:")
  passengers.sort()
  print(*passengers, sep = ", ")
  input("Press enter to go back")


#CLASS BUS

#defining a class for the passenger list
class Bus:
  passengers = []
  number_of_passengers = 0

#The main part of the program where the menu system is. From here the functions are called.
  def run(self):
    menuOptions = ["Add a passenger\t\t\t\t\t\t\t", "Show the age of all passengers\t\t\t", "Show the total age of all passengers\t", "Show the average age of all passengers\t", "Show the age the oldest passenger\t\t", "Show ages within a chosen agespan\t\t", "Sort passengers by age\t\t\t\t\t", "Exit simulator\t\t\t\t\t\t\t"]
    menuSelected = 0

    while(True):
      replit.clear()
      print("Welcome to MyBusTravels bussimulator, please choose what you want to do:")
      
      print("\x1b[?25l")

      if menuSelected == 0:
        print(menuOptions[0] + "<--")
        print(menuOptions[1])
        print(menuOptions[2])
        print(menuOptions[3])
        print(menuOptions[4])
        print(menuOptions[5])
        print(menuOptions[6])
        print(menuOptions[7])
      elif menuSelected == 1:
        print(menuOptions[0])
        print(menuOptions[1] + "<--")
        print(menuOptions[2])
        print(menuOptions[3])
        print(menuOptions[4])
        print(menuOptions[5])
        print(menuOptions[6])
        print(menuOptions[7])
      elif menuSelected == 2:
        print(menuOptions[0])
        print(menuOptions[1])
        print(menuOptions[2] + "<--")
        print(menuOptions[3])
        print(menuOptions[4])
        print(menuOptions[5])
        print(menuOptions[6])
        print(menuOptions[7])
      elif menuSelected == 3:
        print(menuOptions[0])
        print(menuOptions[1])
        print(menuOptions[2])
        print(menuOptions[3] + "<--")
        print(menuOptions[4])
        print(menuOptions[5])
        print(menuOptions[6])
        print(menuOptions[7])
      elif menuSelected == 4:
        print(menuOptions[0])
        print(menuOptions[1])
        print(menuOptions[2])
        print(menuOptions[3])
        print(menuOptions[4] + "<--")
        print(menuOptions[5])
        print(menuOptions[6])
        print(menuOptions[7])
      elif menuSelected == 5:
        print(menuOptions[0])
        print(menuOptions[1])
        print(menuOptions[2])
        print(menuOptions[3])
        print(menuOptions[4])
        print(menuOptions[5] + "<--")
        print(menuOptions[6])
        print(menuOptions[7])
      elif menuSelected == 6:
        print(menuOptions[0])
        print(menuOptions[1])
        print(menuOptions[2])
        print(menuOptions[3])
        print(menuOptions[4])
        print(menuOptions[5])
        print(menuOptions[6] + "<--")
        print(menuOptions[7])
      elif menuSelected == 7:
        print(menuOptions[0])
        print(menuOptions[1])
        print(menuOptions[2])
        print(menuOptions[3])   
        print(menuOptions[4])
        print(menuOptions[5])
        print(menuOptions[6])
        print(menuOptions[7] + "<--") 

      keyPressed = getkey()
      if keyPressed == keys.DOWN and menuSelected + 1 != len(menuOptions):
        menuSelected += 1
      elif keyPressed == keys.UP and menuSelected >= 1:
        menuSelected -=1
      elif keyPressed == keys.ENTER:
        if menuSelected == 0:
          add_passenger(self.passengers)
        elif menuSelected == 1:
          print_bus(self.passengers)
        elif menuSelected == 2:
          calc_total_age(self.passengers)
        elif menuSelected == 3:
          calc_average_age(self.passengers)
        elif menuSelected == 4:
          max_age(self.passengers)
        elif menuSelected == 5:
          find_age(self.passengers)
        elif menuSelected == 6:
          sort_buss(self.passengers)
        elif menuSelected == 7:
          print("\x1b[?25h")
          break


class Program:
  def __init__(self, *args):
    minbuss = Bus()
    minbuss.run()

    replit.clear()
    input("Simulator exited, press Enter to continue . . . ")
    replit.clear()

if __name__ == "__main__":
  my_program = Program()

Tags: ofthetoselfinputagedefprint

热门问题