Умножение для циклических входов в Python3 - PullRequest
0 голосов
/ 30 ноября 2018

Я пишу небольшую программу на Python3, которая рассчитывает доступность сети.

В соответствии с моим классом передачи данных вы определяете доступность сети путем умножения доступности каждого устройства в вашей сети.

Например: В вашей сети 3 устройства.Устройство 1 имеет доступность 0,67.Устройство 2 имеет доступность 0,94.Устройство 3 имеет доступность 0,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 Проще говоря, я ищу общую доступность сети.

Ответы [ 5 ]

0 голосов
/ 30 ноября 2018

У Майкла Кинга был отличный ответ, и я пометил его как правильный.Вот мой новый код, основанный на его ответе.Я просто немного организовал это и использовал функцию округления, чтобы в конечном результате не было десяти десятичных знаков.

netAva = 1 # Network Availability
ava = [] # List of each device's 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's availability.")
0 голосов
/ 30 ноября 2018

Из того, что я могу понять (не из того, что все остальные поняли), вы хотите найти общую доступность сети, другими словами, продукт всех доступных возможностей.

Для того, чтобы индивидуальноСохраняя доступность, вы можете использовать один из множества итерируемых объектов в 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
0 голосов
/ 30 ноября 2018

Во-первых, вы определяете ava из заданного ввода.В этом случае вводимые данные должны быть целыми числами, поэтому ava будет целыми числами.Вам нужно заранее указать, что 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)   
0 голосов
/ 30 ноября 2018

Используйте 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
0 голосов
/ 30 ноября 2018

Вы можете создать список до того, как цикл 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}? '))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...