#python #list #loops
Вопрос:
Я создал программу, в которой пользователь вводит несколько целых чисел, а python отображает, сколько четных и нечетных чисел вы ввели. Код выглядит следующим образом:
ev_od_list = []
even = []
odd = []
number = int(input("Enter an integer(entering 0 would end the process): "))
while number != 0:
number = int(input("Enter an integer(entering 0 would end the process): "))
ev_od_list.append(number)
for i in ev_od_list:
if i % 2 == 0:
even.append(i)
even.remove(0)
print("The number of even numbers you entered is:", len(even))
for j in ev_od_list:
if j % 2 != 0:
odd.append(j)
print(ev_od_list)
print("The number of odd numbers you entered is:", len(odd))
И выход…
Enter an integer(entering 0 would end the process): 1
Enter an integer(entering 0 would end the process): 2
Enter an integer(entering 0 would end the process): 3
Enter an integer(entering 0 would end the process): 4
Enter an integer(entering 0 would end the process): 5
Enter an integer(entering 0 would end the process): 6
Enter an integer(entering 0 would end the process): 7
Enter an integer(entering 0 would end the process): 8
Enter an integer(entering 0 would end the process): 9
Enter an integer(entering 0 would end the process): 10
Enter an integer(entering 0 would end the process): 0
The number of even numbers you entered is: 5
[2, 3, 4, 5, 6, 7, 8, 9, 10, 0]
The number of odd numbers you entered is: 4
Во второй последней строке вы можете заметить, что 1 был автоматически удален из списка. Итак, почему это происходит?
Ответ №1:
number = int(input("Enter an integer(entering 0 would end the process): "))
while number != 0:
number = int(input("Enter an integer(entering 0 would end the process): "))
ev_od_list.append(number)
Вы не добавляете 1-й ввод. 1-й вход заменяется 2-м входом.
итак, в while
цикле сначала добавьте, а затем задайте следующий ввод.
number = int(input("Enter an integer(entering 0 would end the process): "))
while number != 0:
ev_od_list.append(number)
number = int(input("Enter an integer(entering 0 would end the process): "))
Ответ №2:
Вы можете попробовать это решение :
ev_od_list = []
even = []
odd = []
number = None
while number != 0:
number = int(input("Enter an integer(entering 0 would end the process): "))
ev_od_list.append(number)
for i in ev_od_list:
if i % 2 == 0:
even.append(i)
even.remove(0)
print("The number of even numbers you entered is:", len(even))
for j in ev_od_list:
if j % 2 != 0:
odd.append(j)
print(ev_od_list)
print("The number of odd numbers you entered is:", len(odd))
Комментарии:
1. Я чувствовал, что C/ C лучше, когда вы можете сначала определить, что собираетесь использовать, а затем делать все, что захотите. Но в Python я не могу их использовать. Ладно, я так не думал. Огромное спасибо.
Ответ №3:
Причина в том, что у вас есть первый звонок input()
, который перезаписывается другим звонком input()
, и вы добавляете номер после второго input()
звонка. Вот рабочий код с большой оптимизацией:
even = []
odd = []
number = int(input("Enter an integer(entering 0 would end the process): "))
while number != 0:
if number != 0:
if number % 2 == 0:
even.append(number)
else:
odd.append(number)
number = int(input("Enter an integer(entering 0 would end the process): "))
print("The number of even numbers you entered is:", len(even))
print("The number of odd numbers you entered is:", len(odd))
Комментарии:
1. Да, конечно. Но я не знаю, как отметить ваш ответ в качестве ответа.
2. Обратитесь к этому: meta.stackexchange.com/a/5235
Ответ №4:
Вы получаете первый номер и переопределяете на нем второй, чтобы он был потерян. Вы можете получить число внутри цикла и определить число с произвольным значением вне цикла.
Кроме того, я думаю, что вы пытались удалить ноль, вы можете сделать это с помощью del ev_od_list[-1]
команды, которая удаляет последний элемент ev_od_list
, который всегда равен нулю.
ev_od_list = []
even = []
odd = []
number = 1
# number = int(input("Enter an integer(entering 0 would end the process): "))
while number != 0:
number = int(input("Enter an integer(entering 0 would end the process): "))
ev_od_list.append(number)
del ev_od_list[-1]
for i in ev_od_list:
if i % 2 == 0:
even.append(i)
print("The number of even numbers you entered is:", len(even))
for j in ev_od_list:
if j % 2 != 0:
odd.append(j)
print(ev_od_list)
print(even)
print("The number of odd numbers you entered is:", len(odd))
Комментарии:
1. Это также можно сделать, но необязательно, чтобы пользователь вводил 1, так что это может не помочь.