2016-12-11 1 views
-5

Я пытаюсь закодировать что-то вроде этого. Это как план сидения в кино.План мест в python

Row 1 ############### 

Row 2 ############### 

Row 3 ############### 

До 15 строк и каждой строки имеют 15 мест, представленные: #

Я сделал это, используя много «печать», но это слишком долго.

Позиция каждого # должна быть списком. И если кто-то выбирает место, например, 15-е место во 2-м ряду, чем # Должно быть заменено на *.

Я просто хочу знать, как это сделать, используя While или For и список вместо печати # 15 раз?

Вот мой код:

def MenuPrincipal(): 
    print("1. Afficher les places disponibles ") 
    print("2. Afficher les tarifs") 
    print("3. Afficher le total des ventes") 
    print("4. Acheter un billet") 
    print("5. Quitter") 
    print() 

def Place(): 
    Rang1 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang2 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang3 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang4 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang5 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang6 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang7 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang8 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang9 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang10 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang11 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang12 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang13 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang14 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    Rang15 = ('#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#') 
    print("Rangé\t1\t",Rang1[0],Rang1[1],Rang1[2],Rang1[3],Rang1[4],Rang1[5],Rang1[6], 
      Rang1[7],Rang1[8],Rang1[9],Rang1[10],Rang1[11],Rang1[12],Rang1[13],Rang1[14],Rang1[15],Rang1[16],Rang1[17],Rang1[18],Rang1[19],Rang1[20], 
      Rang1[21],Rang1[22],Rang1[23],Rang1[24],Rang1[25],Rang1[26],Rang1[27],Rang1[28],Rang1[29],sep='')  
    print("Rangé\t2\t",Rang2[0],Rang2[1],Rang2[2],Rang2[3],Rang2[4],Rang2[5],Rang2[6], 
      Rang2[7],Rang2[8],Rang2[9],Rang2[10],Rang2[11],Rang2[12],Rang2[13],Rang2[14],Rang2[15],Rang2[16],Rang2[17],Rang2[18],Rang2[19],Rang2[20], 
      Rang2[21],Rang2[22],Rang2[23],Rang2[24],Rang2[25],Rang2[26],Rang2[27],Rang2[28],Rang2[29],sep='')  
MenuPrincipal() 
Choix1 = input("Veuillez SVP choisir une option (1 – 5):") 

if Choix1 == '5': 
    exit 
elif Choix1 == '1': 
    Place() 

Я еще не закончил, но я собираюсь объяснить, что происходит.

У нас есть 5 вариантов.

1-й вариант: показывает карту посадочных мест, а также наличие мест.

2-я опция: Показывает цену за строку. например, первая строка = 200 $, вторая строка = 180 $ и т. д.

3-й вариант: показывает общую продажу.

4-й вариант: дает возможность выбрать конкретное место и купить билет.

5-й вариант: выход из программы.

Обратите внимание, что программа не должна заканчиваться, если мы не выбрали пятый вариант.

+3

Звучит как домашнее задание, покажите нам, что вы пробовали. – saarrrr

+0

да могу. Это на французском языке, но я собираюсь перевести его. Просто дай мне минутку, чтобы изменить мой вопрос. – Alpha

ответ

0
def save(sales, taken_seats): 
    #code here to save sales and taken seats to the file. 
    f = open("data.txt", "w") 
    f.write(str(sales) + "\n") 
    for x in taken_seats: 
     f.write(x + "\n") 
    f.close() 
def load(): 
    #code here to load the sales total and currently purchased seats. 
    f = open("data.txt") 
    sales = f.readline().replace("\n", "") 
    taken_seats = [] 
    d = True 
    while d == True: 
     line = f.readline().replace("\n", "") 
     if line == "": 
      d = False 
     else: 
      taken_seats.append(line) 
    if sales == "": 
     sales = 0 
    else: 
     sales = int(sales) 
    f.close() 
    return (int(sales), taken_seats) 

def display_seats(taken_seats): 
    seating = [] 
    for xd in range(15): 
     row = [] 
     xda = 0 
     for xda in range(15): 
      row.append("#") 
     seating.append(row) 
    for x in taken_seats: 
     pos = x.split(",") 
     seating[(int(pos[0]) - 1)][(int(pos[1]))] = "X" 
    dx = 1 
    for row in seating: 
     if len(str(dx)) < 2: 
      de = " " + str(dx) 
     else: 
      de = dx 
     print ("Row: " + str(de) + " ".join(row)) 
     dx = dx + 1 
def list_options(): 
    print ("5: exit") 
    print ("4: buy ticket") 
    print ("3: view sales") 
    print ("2: view price per row") 
    print ("1: view current seating") 
    new_input = input("Your choice: ") 
    return (new_input) 
def purchase_seat(taken_seats): 
    print ("Would you like to view current seating availability? ") 
    print ("'1' = yes, '2' = no") 
    newinput = input("? ") 
    if newinput == "1": 
     display_seats(taken_seats) 
    x = True 
    while x == True: 
     cost = 0 
     print ("what row would you like to buy a seat on? ") 
     rowx = input("What row? ") 
     print ("What seat would you like to purchase?") 
     rowy = input("what seat? ") 
     d = (str(rowx) + "," + str(rowy)) 
     h = 0 
     for x in taken_seats: 
      if d == x: 
       h = 1 
     if h == 1: 
      print ("That seat is already taken, please choose another seat.") 
     elif int(rowx) > 15 or int(rowy) > 15: 
      print ("Invalid seating location, please choose another seat.") 
     else: 
      print ("seat purchased.") 
      cost = (200 - (10 * int(rowx))) 
      x = False 
    return (cost, (str(rowx) + "," + str(rowy))) 
da = load() 
sales = da[0] 
taken_seats = da[1] 
quitter = 0 
while quitter == 0: 
    new_input = list_options() 
    if new_input == "5": 
     save(sales, taken_seats) 
     quitter = 1 
    elif new_input == "4": 
     g = True 
     while g == True: 
      new_seat = purchase_seat(taken_seats) 
      taken_seats.append(new_seat[1]) 
      print ("That will be: $ " + str(new_seat[0])) 
      sales = sales + new_seat[0] 
      print ("Would you like to purchase another seat?") 
      new_input = input("'1' = yes, '2' = no: ") 
      if new_input == "1": 
       pass 
      else: 
       g = False 
    elif new_input == "3": 
     print ("Total sales: $" + str(sales)) 
    elif new_input == "2": 
     xd = 0 
     while xd < 15: 
      print ("Row " + str(xd + 1) + ": is $" + str((200 - (10 * xd)) - 10)) 
      xd = xd + 1 
    elif new_input == "1": 
     display_seats(taken_seats) 
    else: 
     print ("invalid option.") 

ZIP-файл, содержащий скрипт с сохранением файла, можно найти по адресу: Download seating.zip

+0

, когда я выбираю число, подобное 1 или 2. Он говорит о некорректном выборе? Как выбрать параметр? – Alpha

+0

@ Алфа вы на python 2.7 или 3? – ANVGJSENGRDG

+0

Я использую spyder, который поставляется с Anaconda. Я думаю, что это 3 – Alpha

-1
def display(taken_seats): 
    seating = [] 
    xd = 0 
    while xd < 15: #creates the cinema seating map 
     row = [] 
     xda = 0 
     while xda < 15: 
      row.append("#") 
      xda = xda + 1 
     xd = xd + 1 
     seating.append(row) 
    for x in taken_seats: #changes the seats that are taken to a "X" 
     pos = x.split(",") 
     seating[(int(pos[0]) - 1)][(int(pos[1]))] = "X" 
    dx = 1 
    for row in seating: #prints the rows. 
     if len(str(dx)) < 2: 
      de = " " + str(dx) 
     else: 
      de = dx 
     print "Row: " + str(de) + " ".join(row) 
     dx = dx + 1 




taken_seats = ("1,12", "2,8", "5,5", "12,12") 

display(taken_seats) 

все купленные места помещаются в список «taken_seats» в формате строки #, сиденье #

надеюсь, что это помогло! (Мои извинения за это не является чистым, его в основном заполнены итераторы.)

EDIT:

добавить дополнительные места, просто сделать

taken_seats.append("10,10") 

изменения номера в нужное положение для сидения.

для отображения обновленного сидения, просто запустите команду

display(taken_seats) 

код с интерфейсом меню:

def display_seats(taken_seats): 
    seating = [] 
    for xd in range(15): 
     row = [] 
     xda = 0 
     for xda in range(15): 
      row.append("#") 
     seating.append(row) 
    for x in taken_seats: 
     pos = x.split(",") 
     seating[(int(pos[0]) - 1)][(int(pos[1]))] = "X" 
    dx = 1 
    for row in seating: 
     if len(str(dx)) < 2: 
      de = " " + str(dx) 
     else: 
      de = dx 
     print ("Row: " + str(de) + " ".join(row)) 
     dx = dx + 1 
def list_options(): 
    print ("5: exit") 
    print ("4: buy ticket") 
    print ("3: view sales") 
    print ("2: view price per row") 
    print ("1: view current seating") 
    new_input = input("Your choice: ") 
    return (new_input) 
def purchase_seat(taken_seats): 
    print ("Would you like to view current seating availability? ") 
    print ("'1' = yes, '2' = no") 
    newinput = input("? ") 
    if newinput == "1": 
     display_seats(taken_seats) 
    x = True 
    while x == True: 
     cost = 0 
     print ("what row would you like to buy a seat on? ") 
     rowx = input("What row? ") 
     print ("What seat would you like to purchase?") 
     rowy = input("what seat? ") 
     if any((str(rowx) + "," + str(rowy)) for x in taken_seats): 
      print ("That seat is already taken, please choose another seat.") 
     elif int(rowx) > 15 or int(rowy) > 15: 
      print ("Invalid seating location, please choose another seat.") 
     else: 
      print ("seat purchased.") 
      cost = (200 - (10 * int(rowx))) 
      x = False 
    return (cost, (str(rowx) + "," + str(rowy))) 
taken_seats = [] 
sales = 0 
quitter = 0 
while quitter == 0: 
    new_input = list_options() 
    if new_input == "5": 
     quitter = 1 
    elif new_input == "4": 
     g = True 
     while g == True: 
      new_seat = purchase_seat(taken_seats) 
      taken_seats.append(new_seat[1]) 
      print ("That will be: $ " + str(new_seat[0])) 
      sales = sales + new_seat[0] 
      print ("Would you like to purchase another seat?") 
      new_input = input("'1' = yes, '2' = no: ") 
      if new_input == "1": 
       pass 
      else: 
       g = False 
    elif new_input == "3": 
     print ("Total sales: $" + str(sales)) 
    elif new_input == "2": 
     xd = 0 
     while xd < 15: 
      print ("Row " + str(xd + 1) + ": is $" + str((200 - (10 * xd)) - 10)) 
      xd = xd + 1 
    elif new_input == "1": 
     display_seats(taken_seats) 
    else: 
     print ("invalid option.") 

почтовый файл, содержащий файлы и код для сидения и продаж будет сохранен и загруженные из файла можно найти по адресу: gaelephor.com

+0

эй спасибо, я посмотрю. Это может занять несколько минут, потому что я новичок в программировании. – Alpha

+0

как я могу выбрать конкретное место? в соответствии с вашим кодом нет опции. – Alpha

+0

@Alpha вы бы использовали команду «took_seats.append (« 10,10 »)« – ANVGJSENGRDG

Смежные вопросы