Python实现新买家触发买家编号递增的计数器问题求助
问题解决:实现买家编号自动递增
你的代码里count变量只做了初始化,但从未对它进行递增操作,所以每次打印count + 1都是0 + 1 = 1,自然不会变化。另外第一个买家(sold=0时)也没有显示编号,不符合需求。
以下是修改后的完整代码,同时优化了逻辑:
total = 200 # 总票数 sold = 0 # 已售票数 count = 0 # 买家计数器 while sold < total: remaining = total - sold count += 1 # 每次进入循环,先递增计数器,对应新买家 if sold == 0: print(f"Welcome to Movies4Us! You are buyer NO.{count}.") else: print(f'You are buyer NO.{count}. The number of remaining tickets is now {remaining}.') name = input('What is your name?: ') tickets_input = input("How many tickets would you like to purchase?: ") try: tickets = int(tickets_input) if tickets > remaining: print("Sorry, there aren't that many tickets available.") else: sold += tickets print(f"You have purchased {tickets} tickets, Enjoy the movie {name}!") except ValueError: print("Invalid input. Please enter a number.") count -= 1 # 输入错误,不算新买家,计数器回退 continue print("There are no more tickets available.")
修改说明:
- 在循环开头添加
count += 1,确保每个新进入循环的用户都获得递增的编号 - 第一个买家(sold=0)也显示编号,保持逻辑统一
- 当用户输入非数字触发
ValueError时,执行count -= 1,因为输入错误属于同一个用户重试,不算新买家,避免编号跳过 - 使用f-string格式化输出,让代码更简洁易读
内容的提问来源于stack exchange,提问作者user21630665
相关产品推荐
相关产品推荐

