Python3中循环输入的乘法

Python3中循环输入的乘法,python,list,for-loop,int,Python,List,For Loop,Int,我正在用Python3编写一个计算网络可用性的小程序 根据我的数据通信类,您可以通过乘以网络中每个设备的可用性来确定网络可用性 例如:您的网络中有3台设备。设备1的可用性为0.67。设备2的可用性为.94。设备3的可用性为0.79。然后乘以可用性:.67*.94*.79=.498网络可用性 这是到目前为止我的代码: # Network Availability # by Nicholas Zachariah numDev = int(input("How many devices do you

我正在用Python3编写一个计算网络可用性的小程序

根据我的数据通信类,您可以通过乘以网络中每个设备的可用性来确定网络可用性

例如:您的网络中有3台设备。设备1的可用性为0.67。设备2的可用性为.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
简单地说,我在寻找网络的总可用性。

您可以在for循环add use list.append()之前创建一个列表


首先,您要根据给定的输入定义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)   

使用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

根据我的理解(而不是其他人的推断),您希望找到总的网络可用性,换句话说,是所有可用性的乘积

为了单独存储可用性,您可以使用python中许多iterable对象中的一个,最简单的是一个。列表是一种包含多个元素(不一定是同一类型)的数据结构

为了实现您想要实现的目标,您需要以下几点:

# 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

迈克尔·金有一个很好的答案,我认为是正确的。这是我根据他的答案写的新密码。我只是稍微组织了一下,使用了一个四舍五入函数,这样最终的结果就不会有十位小数了

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

在这里以
{device:availability}
的形式使用
dict
可能会有所帮助,然后您可以使用
dict.values()
访问所有可用性。如果设备的名称无关紧要,只需用值填充列表,然后将元素彼此相乘即可。@theincorgible1我喜欢这个想法。让我自己试着从这里弄清楚。如果没有,我可以回来请求更多的帮助吗?我也会让你知道我是否能弄明白。@NicholasZachariah你总是可以自由提问!如果你确实解决了自己的问题,我建议你把问题的答案贴出来。当你们能够接受一个答案时,选择一个最能解决你们问题的答案✅非常感谢。我会确保这样做。这根本不能解决问题。因为我确信您的代码是有效的,所以我对导入以及如何使用它们还不够熟悉。我一定会看看你的代码,然后使用它,这样我就可以开始练习了!谢谢你的帮助,没问题。导入可能很吓人,但实际上它们只是一种让您能够访问没有导入就不可用的方法的方法。例如,有一个名为“functools”的模块。它有一个我需要的方法,叫做“reduce”,所以import语句说只导入一个方法,而不是整个模块。如果导入整个模块,就像我对operator所做的那样,则需要指定该项属于该模块。因此,“operator.mul”。我想指出的是
functools
处于运行状态,因此您无需安装任何附加设备。这不是他想要的,他想“打印整个网络的可用性”@AdamDadvar我相信您误解了这个问题。“然后乘以每个设备的可用性并打印整个网络的可用性,但我在完成这项任务时遇到了困难,因为我不知道如何单独存储每个设备的可用性。”这对我帮助最大。然而,我一直坚持使用TotalAvailability,您将其设置为1,但实际上是“1=1*device”(TotalAvailability=TotalAvailability*device)。你能解释一下它是怎么工作的吗?在你的脑子里反复思考一下:你首先从Total=1开始,然后Total=1*device,这意味着Total=device\u 1,下一次你得到Total=device\u 1*device\u 2。。。等
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.")