Я кодирую небольшую программу в Python3, которая вычисляет доступность сети.
Согласно моему классу Data Communications, вы определяете доступность своей сети, увеличивая доступность каждого устройства в своей сети.
Например: в вашей сети есть 3 устройства. Устройство 1 имеет доступность.67. Устройство 2 имеет доступность 0,94. Устройство 3 имеет доступность.79. Затем вы умножаете доступность:.67 *.94 *.79 =.498 доступность сети.
Вот мой код:
# Network Availability
# by Nicholas Zachariah
numDev = int(input("How many devices do you have? ")) # number of devices
print(f"There are {numDev} devices.")
devList = list(range(1, numDev+1)) # device list
for device in devList:
ava = input(f"What is the availability of device number {device}? ") # availability
Отсюда я хотел бы сохранить каждый доступ к входу, а затем умножить доступность каждого устройства и распечатать всю доступность сети, но мне трудно выполнить эту задачу, поскольку я не могу понять, как индивидуально хранить доступность каждого устройства. Может ли кто-нибудь помочь?
PS Проще говоря, я ищу сеть Total Availability.
Во-первых, вы определяете ava от введенного ввода. В этом случае вводимый ввод должен быть int, поэтому ava будет int. Вам нужно указать, что ava - это список заранее, так что вы можете использовать.append() для добавления значения ввода.
После этого вы можете прокручивать список ava и умножать на результат:
# Network Availability
# by Nicholas Zachariah
numDev = int(input("How many devices do you have? ")) # number of devices
print(f"There are {numDev} devices.")
devList = list(range(1, numDev+1)) # device list
ava = []
for device in devList:
ava.append(int(input(f"What is the availability of device number {device}? ")))
print (ava)
TotalAvailability = 1
for device in ava:
TotalAvailability *=device
print( TotalAvailability)
Из того, что я могу понять (не то, что все остальные вывели), вы хотите найти полную доступность сети, другими словами, продукт всех доступных.
Чтобы индивидуально сохранить доступность, вы можете использовать один из множества итерируемых объектов в python, самым простым является список. Список - это структура данных, которая содержит несколько элементов (не обязательно одного и того же типа).
Чтобы достичь того, чего вы хотите достичь, вам необходимо следующее:
# Network Availability
# by Nicholas Zachariah
numDev = int(input("How many devices do you have? ")) # number of devices
print(f"There are {numDev} devices.")
devList = list(range(1, numDev+1)) # device list
availability_list = list()
for device in devList:
ava = input(f"What is the availability of device number {device}? ") # availability
availability_list.append(ava)
curr_avail = availability_list.pop()
for avail in availability_list:
curr_avail = curr_avail*avail
Например, когда вы вводите 0,8, 0,7 и 0,6
availability_list = [0.8, 0.7, 0.6]
curr_avail = availability_list.pop()
for avail in availability_list:
curr_avail = curr_avail*avail
curr_avail
>>> 0.33599999999999997
Используйте значение dict для значений.
#!/usr/bin/python3.5
import operator
from functools import reduce
numDev = int(input("How many devices do you have? ")) # number of devices
print("There are {} devices.".format(numDev))
devList = list(range(1, numDev+1)) # device list
ava = {}
for device in devList:
ava[device] = float(input("What is the availability of device number {}? ".format(device))) #add to dict
print("{:.2f}".format(reduce(operator.mul, ava.values(), 1)))
>>>How many devices do you have? 2
>>>There are 2 devices.
>>>What is the availability of device number 1? .65
>>>What is the availability of device number 2? .66
>>>0.43
У Майкла Кинга был отличный ответ, и я отметил его как правильное. Вот мой новый код, основанный на его ответе. Я просто немного организовал его и использовал круглую функцию, поэтому конечный результат не имеет десяти десятичных знаков.
netAva = 1 # Network Availability
ava = [] # List of each device availability
numDev = int(input("How many devices do you have? ")) # number of devices
print(f"There are {numDev} devices.")
devList = list(range(1, numDev+1)) # device list
for device in devList:
ava.append(float(input(f"What is the availability of device number {device}? "))) # availability
for device in ava:
netAva *= device
netAva = round(netAva, 3)
print(f"{netAva} is your network availability.")
Вы можете создать список до того, как цикл for добавит use list.append()
numDev = int(input('How many devices do you have? '))
print(f'There are {numDev} devices.')
devList = list(range(1, numDev+1))
avaList = []
for device in devlist:
avaList.append(input(f'What is the availability of device number {device}? '))
Поскольку у вас есть только количество устройств и нет имен или других отдельных параметров, почему бы не использовать список для хранения каждой доступности устройства? Добавление его в цикл for делает его отсортированным от 1 до последнего бесплатно.
dict
здесь в форме{device: availability}
, тогда вы можете получить доступ ко всей доступности, используяdict.values()