Python-Хранение входных переменных в цикле с разными именами на одну итерацию - PullRequest
0 голосов
/ 02 декабря 2018

Вот простой цикл.Это цикл while, но мне все равно, является ли он циклом for или другим.

answer="y"
counter=1
while answer=="y":
    number=int(input("Enter number: "))
    answer=input("Want to continue? ")
    counter=counter+1

Я хочу сохранить переменные, введенные в цикле, с разными именами переменных (если это возможно), поэтомучто я могу сделать простые команды, такие как:

-печатать первую введенную цифру

-добавить 1 ко второму введенному номеру

Я думаю, что это должно что-то делать со счетчикомтипа

    number.counter=number
    print(number.counter)

Но, как вы уже догадались, это не сработает ;;

Ответы [ 3 ]

0 голосов
/ 02 декабря 2018

Я бы использовал defaultdict из библиотеки коллекций для выполнения этой задачи.Это обеспечит расположение индекса каждой входной переменной.С помощью индекса и переменных вы можете делать все остальное.

from collections import defaultdict

in_number = defaultdict(list)

loop = True
counter = 1
while loop:

    try:
        number = int(input("Enter number: "))
        in_number[counter] = number
        counter+=1
    # catch errors  
    except Exception as e:
            # find better way to deal with them
        print(e)

    continue_ = input("Want to continue? ")
    if continue_.lower() == 'y':
        loop = True
    else:
        loop = False

print('First number',in_number[1])
if len(in_number)>1:
    print('Second number +1', in_number[2]+1)

Итак, мы используем цикл while для заполнения чисел ввода наших пользователей.Каждый номер магазина с его индексом.Мы ловим ошибку, которая будет возникать, если ввод числа не является числом с плавающей точкой или целым числом.Просим продолжить и модифицировать переменную цикла.Лучшее в этом то, что вы можете добавить больше вариантов продолжения.Например,

continue_.lower() in ['y','yes','ja','continue']

Надеюсь, что это поможет дать вам указания;)

0 голосов
/ 02 декабря 2018

Используйте defaultdict from collections для сохранения всех чисел и связанного с ним имени в виде пар ключ / значение.

from collections import defaultdict

answer="y"
dic = defaultdict(list)
counter=1
while answer=="y":
    number = int(input("Enter number: "))
    numberx = 'number'+str(counter)
    dic[numberx] = number
    answer=input("Want to continue? ")
    counter=counter+1
print(dic)
print(dic.items())
print(dic.keys())
print(dic.values())

Вывод:

(python37) C:\Users\Documents>py test.py
Enter number: 12
Want to continue? y
Enter number: 87
Want to continue? y
Enter number: 90
Want to continue? y
Enter number: 12
Want to continue? n
defaultdict(<class 'list'>, {'number1': 12, 'number2': 87, 'number3': 90, 'number4': 12})
dict_items([('number1', 12), ('number2', 87), ('number3', 90), ('number4', 12)])
dict_keys(['number1', 'number2', 'number3', 'number4'])
dict_values([12, 87, 90, 12])
0 голосов
/ 02 декабря 2018

Не идеально, чтобы переменные создавались n количество раз для хранения значений, введенных в каждой итерации.Возникает необходимость что-то вроде списка, который может содержать n элементов:

answer = "y"
numbers = []

while answer.lower() == "y":
    numbers.append(int(input("Enter number: ")))
    answer = input("Want to continue? ")

answer.lower() - это гарантированная проверка (предположим, что пользователь вводит Y вместо y)

Теперь это даст первое введенное число:

numbers[0]

Это добавит 1 ко второму номеру:

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