#python
#python
Вопрос:
Я работаю над созданием сервисного меню, в котором пользователь может выбрать, какую услугу он хочет, и добавить ее в список.
После того, как пользователь выбрал нужные ему услуги, он переходит к оформлению заказа, где общая стоимость этих услуг суммируется, и он платит.
В настоящее время у меня есть функция, которая получает и сохраняет нужные пользователю сервисы из словаря:
userInput = ""
servicesAvailableFull = {'Firewall Service' : 1.2, 'Security Ops Centre' : 4.2,
'Hot Site' : 8.5}
servicesAvailable = ["Firewall Service", "Security Ops Centre", "Hot Site"]
userAddedServices = []
print(" Welcome to Electronic Services and Protection: ")
while userInput != "Q":
menu()
userInput = input("Please input your choice of action ('Q' to exit): ")
if userInput == "1":
displayServices(servicesAvailableFull , servicesAvailable, userAddedServices)
print(userAddedServices)
elif userInput == "4":
payment(userAddedServices, servicesAvailableFull)
def displayServices(availServiceFull, availService, serviceToAdd):
userInput = ""
counter = 1
elementToTransfer = ""
while userInput != "Q":
print("n")
print("Yes, we have the following service(s): ")
for x, service in availServiceFull.items():
print(f" {counter}. {x} : ${service}/year")
counter = 1
userInput = input(
"Enter the service(s) that you would like to add, or 'Q' to stop: ")
try:
if userInput.isnumeric()==False:
raise ValueError
#elif int(userInput) > int(len(userAddedServices)) or int(userInput) <= 0:
# raise ValueError
else:
elementToTransfer = availService[int(userInput) - 1]
if elementToTransfer in serviceToAdd:
print("Sorry, you added that service already.")
counter = 1
continue
else:
serviceToAdd.append(elementToTransfer)
print(serviceToAdd)
counter = 1
except ValueError:
counter = 1
print("Please enter a numeric value")
Прямо сейчас у меня есть список, содержащий службы, которые пользователь хочет добавить, и словарь, содержащий как услуги, так и цену услуг.
В настоящее время я работаю над payment()
функцией, но я не уверен, как заставить программу распечатывать как услуги, которые пользователь хочет добавить, так и их соответствующую цену.
Вот так:
- Обслуживание брандмауэра: 1,2 тыс. долларов в год
- Операции по обеспечению безопасности: 4,2 тыс. долл. / год
Я могу печатать из списка, содержащего добавленные пользователем услуги, но я не уверен, как получить доступ к ценам из словаря.
Комментарии:
1. Это очень запутанный вопрос и кажется очень специфической домашней работой. Пожалуйста, общие вопросы, которые могут быть полезны и другим
Ответ №1:
для доступа к значению словаря:
x = {"elem": "value"}
print(x["elem"])
Вывод:
"value"
Ответ №2:
Если ключи словаря совпадают с содержимым списка, это должно быть просто:
for s in userAddedServices:
price = servicesAvailableFull[s]
print(f"{s} ${price}k/year")
Ответ №3:
Словарь состоит из 2 частей.
- Клавиша
- Значение
Это похоже на {‘key’: ‘value}
Вы можете перебрать его следующим образом
for i, (key, value) in enumerate(servicesAvailableFull.items()):
print(i 1, key, ':', value,'$/year')
Это даст вам желаемый результат в виде
1 Обслуживание брандмауэра: 1,2 доллара в год
2 Центр управления безопасностью: 4.2 $ / год
3 Горячий сайт: 8.5 $ / год
Ответ №4:
Я думаю, что самый простой способ, когда я получаю ваш вопрос, — это сделать цикл ‘for’ по элементам в списке пользовательских служб. Доступ к значениям словаря с помощью метода dict[key]:
for item in userAddedServices:
print(f"{userAddedServices.index(item) 1}. {item} : ${servicesAvailableFull[item]}k/year.")
Для userAddedServices == servicesAvailable это возвращает:
- Обслуживание брандмауэра: 1,2 тыс. долл. / год.
- Центр управления безопасностью: 4,2 тыс. долл. / год.
- Горячий сайт: 8,5 тыс. долларов в год.