Я хотел бы, чтобы номер покупателя менялся каждый раз, когда появляется новый покупатель
total = 200 # Assigns 200 tickets to variable total
sold = 0 # Assigns 0 tickets to variable sold
count = 0
while sold < total: # Runs while loop as long as tickets sold is less than total tickets
remaining = total - sold # Assigns total - sold to variable remaining
if sold == 0: # If tickets are equal to 0
print("Welcome to Movies4Us!") # Prints "Welcome to Movies4Us!" if condition above is satisfied
else:
print('You are buyer NO.', count + 1, "." "The number of remaining tickets is now", remaining, ".") # Prints user's number and remaining amount of tickets
name = input('What is your name?: ')
tickets = input("How many tickets would you like to purchase?: ") # Asks user to enter desired amount of tickets to purchase
try:
tickets = int(tickets) # Converts variable tickets to integer type
if tickets > remaining: # If user enters more tickets than remaining tickets available
print("Sorry, there aren't that many tickets available.") # Prints no more tickets available
else:
sold += tickets # Updates value of variable sold into tickets
print("You have purchased", tickets, "tickets, Enjoy the movie", name, '!') # Prints the amount of tickets the user purchased
except ValueError: # If user inputs anything except for an integer
print("Invalid input. Please enter a number.") # Prints invalid input and asks user to input again
continue # Ends current loop and runs the while loop again
print ("There are no more tickets available.") # If number of tickets reached 0, program ends
Пробовал добавлять count = 0
и count + 1
count + 1
— это выражение, которое оценивает count
, а затем добавляет 1 к значению. count = count + 1
будет оценивать это выражение (справа), а затем использовать оператор =
, чтобы присвоить это вычисленное значение переменной слева, count
, тем самым изменив его старое значение на старое значение плюс один. Такого рода обновление переменной — обычное дело, и повторение нежелательно, поэтому есть специальный оператор +=
, который прибавляет к значению в переменной. count += 1
означает «добавить 1 к значению в count
» и дает тот же результат, что и count = count + 1
, но более лаконичный.
Вы уже инициализировали счетчик: count = 0
. Вам просто нужно увеличивать его внутри цикла всякий раз, когда совершается действующая покупка билета.
Добавьте count += 1
внутри блока else
, где покупка действительного билета осуществляется по заявлению sold += tickets
. Это будет увеличивать счетчик всякий раз, когда происходит успешная покупка.
Если вы хотите обновить значение count, самый простой и понятный способ — обновить его в строке перед оператором печати. В качестве альтернативы вы можете обновить другую часть кода, где вы обновляете значение sold
.
if sold == 0: # If tickets are equal to 0
print("Welcome to Movies4Us!") # Prints "Welcome to Movies4Us!" if condition above is satisfied
else:
count += 1
print(f"You are buyer NO.{count}.", end = " ") # Use string interpolation
print(f"The number of remaining tickets is now {remaining}.") # Prints user's number and remaining amount of tickets
Я также обновил это, чтобы использовать f-строки для форматирования, иначе у вас возникнет проблема с наличием лишнего пробела между значением count и следующим «.».
Если вы действительно не хотите иметь отдельную строку для count+=1
, можно обновить счетчик, встроенный в оператор печати, но только если вы не используете f-строки и если вы используете оператор :=
, потому что аргументы для оператор печати должен быть выражением, поэтому обычное присваивание было бы синтаксической ошибкой:
print('You are buyer NO.', count := count +1, ". The number of remaining tickets is now", remaining, ".") # Prints user's number and remaining amount of tickets
count+1
=>count+=1