Python - 将空字符串设置为 0

Python - Set empty string to 0

我有字符串变量,例如其中两个是空的“”。

那些空字符串应该设置为 0。

然后,所有字符串变量都应转换为整数,以便能够对其进行一些检查并return它们。

但我目前的问题是我的循环没有将空字符串设置为 0。

当我 运行 脚本时,我得到以下输出:

['1000', '', '', '5']
Only Numbers!

你知道我如何在循环后处理变量吗? 不需要列表索引?

def func():
    bandwidth = 2000
    voice = "1000"
    signal = ""
    stream = ""
    business = "5"

    empty_check = [voice, signal, stream, business]
    for n in empty_check:
        if n == "":
            n = 0
    print(empty_check) # check if "" was set to 0
    try:
        for n in empty_check:
            n = int(n)
    except ValueError:
        print("Only Numbers!")
    else:
        if (empty_check[0] > 2000000) or (empty_check[0] > bandwidth):
            print("Error")
        elif (empty_check[1] > 1000000):
            print("Error")
        elif (empty_check[2] + empty_check[3]) > 95:
            print("Error")
        else:
            return bandwidth, empty_check[0], empty_check[1], empty_check[2], empty_check[3]
    
test = func()

您的 for 循环仅将 0 分配给局部变量 n,并且没有修改列表。相反,您应该 empty_check[n] 更改列表中索引处的值。

我尝试在您的 for 循环中使用 range,以便将 n 用作 empty_check 列表中的索引并成功获得输出:

['1000', 0, 0, '5']

https://www.w3schools.com/python/python_for_loops.asp

这是我使用的代码:

for n in range(len(empty_check)):
    if empty_check[n] == "":
        empty_check[n] = 0
print(empty_check)  # check if "" was set to 0
try:
    for n in range(len(empty_check)):
        empty_check[n] = int(n)