Умножение для циклических входов в Python3

1

Я кодирую небольшую программу в 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.

  • 1
    Может помочь в использовании dict здесь в форме {device: availability} , тогда вы можете получить доступ ко всей доступности, используя dict.values()
  • 0
    Если название устройства не имеет значения, просто заполните список значениями, а затем умножьте элементы друг на друга.
Показать ещё 4 комментария
Теги:
list
for-loop
int

6 ответов

1
Лучший ответ

Во-первых, вы определяете 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)   
  • 0
    Это то, что помогло мне больше всего. Тем не менее, я застрял на TotalAvailability, вы установили его равным 1, но тогда в значительной степени есть «1 = 1 * устройство» (TotalAvailability = TotalAvailability * устройство). Можете ли вы объяснить, как это работает, пожалуйста?
  • 0
    Запустите его в своей голове: сначала вы начинаете с Total = 1, затем Total = 1 * device, что означает Total = device_1, при следующем запуске вы получаете Total = device_1 * device_2 ... и т. Д.!
1

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

Чтобы индивидуально сохранить доступность, вы можете использовать один из множества итерируемых объектов в 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
1

Используйте значение 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
    Поскольку я уверен, что ваш код действителен, я еще недостаточно знаком с импортом и тем, как его использовать. Я обязательно посмотрю ваш код и поработаю с ним, хотя, чтобы начать практиковать! Я ценю помощь.
  • 0
    Нет проблем. Импорт может быть пугающим, но на самом деле все, что он есть, это способ дать вам доступ к методам, которые недоступны без импорта. Например, есть модуль под названием «functools». У него есть метод, который мне нужен, называемый «уменьшить», поэтому оператор import говорит, что нужно импортировать только один метод, а не весь модуль. Если вы импортируете весь модуль, как я сделал с оператором, вам нужно указать, что элемент принадлежит модулю. Следовательно, operator.mul.
Показать ещё 6 комментариев
0

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

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.")
0

Вы можете создать список до того, как цикл 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}? '))
  • 0
    Это не решает вопрос вообще.
-2

Поскольку у вас есть только количество устройств и нет имен или других отдельных параметров, почему бы не использовать список для хранения каждой доступности устройства? Добавление его в цикл for делает его отсортированным от 1 до последнего бесплатно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню