Python - установить массив - PullRequest
0 голосов
/ 17 июня 2020

Подскажите, почему мой цикл for не работает? Я думаю, что он должен уметь это как-то решить с помощью цикла, и я что-то упустил. Это не большая проблема, приятель, я хотел бы знать, где ошибка в моей идее. Я пробовал это в python 3.7 и 3.8, которые я установил.

a = input("Input a: ")
b = input("Input b: ")
c = input("Input c: ")
d = input("Input d: ")

##doesn´t work (if it is an empty string, set it to 0)
for i in (a,b,c,d):
    if i == "":
        i = 0

##work perfect
##if a == "": a = 0
##if b == "": b = 0
##if c == "": c = 0
##if d == "": d = 0

array = [a,b,c,d]

print(array)

Ответы [ 3 ]

0 голосов
/ 17 июня 2020

В этом коде есть две проблемы:

1) Если вы хотите изменить значение на 0, вам нужно создать отдельную переменную для этого списка, т.е. lst = [a, b, c, d] перед для l oop. Ваш оператор будет: for i in lst:

2) Это потому, что в вашем операторе for l oop вы используете '()', который является оператором кортежа, а кортеж является неизменной структурой данных (вы не можете изменить значение кортежа после инициализации). Просто измените этот оператор списка '()' на '[]', поскольку список является изменяемым.

a = input("Input a: ")
b = input("Input b: ")
c = input("Input c: ")
d = input("Input d: ")

lst=[a,b,c,d]

for i in range(len(lst)):
    if lst[ i ]== "":
        lst[i ]= 0

print(lst)

ИЛИ используйте itertools.

0 голосов
/ 17 июня 2020

Вы присваиваете 0 параметру i. Ни к одной из переменных a, b, c или d. Просто сначала преобразуйте эти входные данные в список, а затем, если условие соответствует, присвойте элементу списка ноль, а не переменную l oop i.

array = [a,b,c,d] for i in range(len(array)): if array[i]=="": array[i] = 0

0 голосов
/ 17 июня 2020

Попробуйте for i in [a,b,c,d]: Вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...