#python
#python
Вопрос:
num_list = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166]
count_odd = 0
list_sum = 0
i = 0
len_num_list = len(num_list)
while (count_odd < 5) and (i < len_num_list):
if num_list[i] % 2 != 0:
list_sum = num_list[i]
count_odd = 1
i = 1
print ("The numbers of odd numbers added are: {}".format(count_odd))
print ("The sum of the odd numbers added is: {}".format(list_sum))
Отказ от ответственности: Я полный новичок, и я обнаружил, что больше всего борюсь с циклами while. Циклы For имеют смысл для меня.
Цель этого кода — получить первые 5 нечетных чисел в списке и найти их сумму.
Я изо всех сил пытаюсь понять назначение i
переменной и почему они использовали num_list[i] % 2 != 0
(если i установлено в 0 глобально перед циклом), чтобы найти нечетное число. Я предполагаю, что это имитирует цикл for, поэтому он может выполнять итерации по списку, но я не уверен, как это работает. и блок кода под этим
list_sum = num_list[i]
count_odd = 1
i = 1
это то, с чем я борюсь больше всего. Я не понимаю, для достижения чего предназначен этот блок кода и как он работает.
Ответ №1:
Ваш цикл while продолжает выполняться до тех пор, пока count_odd
переменная (количество нечетных чисел, вычисленных на данный момент) меньше 5 и i
(общее количество чисел, вычисленных на данный момент) меньше длины списка чисел для оценки.
Каждый раз, когда выполняется код, если число с текущим индексом ( i
) нечетное (не имеет остатка после деления на 0), то сумма нечетных чисел ( list_sum
) увеличивается на значение этого числа. Также количество вычисленных нечетных чисел ( count_odd
) увеличивается на 1, чтобы показать, что вычисляется другое нечетное число. Но независимо от того, нечетное это число или нет, индекс текущего числа ( i
) увеличивается на 1, чтобы показать, что следующее число может быть вычислено.
Ответ №2:
Код предельно прост:
Условие в wile означает, что пока он не нашел число 5, и пока в первом списке есть число, это должно сработать.
Чем условие:
if num_list[i] % 2 != 0:
Переменная используется для чтения каждого элемента списка, в то время как сама переменная увеличивается.
Затем num % 2 возвращает остаток от деления num / 2. Если это не 0, то наверняка будет 1, поэтому число нечетное.
Переменная увеличивается сама по себе, потому что она должна прочитать следующее число в списке. Если это вам не подходит, попробуйте узнать что-нибудь о списке, кортежах и так далее
Надеюсь, будет полезно
Ответ №3:
#it is the first initializing, essentially starting with 0
i = 0
len_num_list = len(num_list)
# you can reframe the while to:
# as long as you do not have 5 odd numbers AND you are not through the whole list, continue
while (count_odd < 5) and (i < len_num_list):
# num_list[i] means that you take the element with index i from the list
# since i is initialized with 0, at the first loop you take the first element (in python index starts at 0 not 1)
# SomeNumber % 2 means that if you divide the number by 2, what are the decimals.
# Only odd numbers will have decimals after division with 2, e.g. 4/2 = 2.0 but 3/2 = 1.5 so the rest would be 5
# and 5 is != 0
if num_list[i] % 2 != 0:
# number = other_number is essentially short for: number = number other_number
# essentially you have e.g. numb = 100 and want to add 10, you can either do:
# numb = numb 10 OR numb = 10
list_sum = num_list[i]
count_odd = 1
# since we are now through the first number of the list, which had index 0
# we now add 1 to the index and the while loop continues until the criterias stated after the "while" keyword are met.
i = 1
Ответ №4:
Вы можете преобразовать его в цикл ‘for’, разделяющий проверки условий. Индексирование num_list не требуется, его можно повторить.
for n in num_list:
if n%2==0:
continue
if count_odd==5:
break
list_sum = n
count_odd = 1
Ответ №5:
Переменная i — это переменная, которая запускает цикл while. В исходном коде i= 0, и использование (num_list[i] % 2 != 0) заключается в поиске нечетного числа. Потому что любое число, кратное 2, является четным числом.Поэтому в коде указано, что при делении числа на 2 оно не должно быть равно нулю. Итак, это нечетное число.
Объяснение кода.
num_list[0]=422
422/2 is equal to zero.so it is not a odd number.
Then the i value is incriminating by 1
So i=i 1
i=0 1
i=1
now the value of i=1
num_list[1]=136
136/2=0 it is a even number.
Now i will again incriminating by 1
i=1 1
i=2
num_list[2]=524
524 is again even.
Then i again incriminating by 1
i=2 1
i=3
num_list[3]=85
85/2 is not zero
then list_sum=0 85
now list_sum=85
And i keeps on incriminating by 1 till 5 odd numbers is achieved.
Вот тот же код с циклом for
num_list = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166]
countodd=0
sum=0
l=len(num_list)
for i in range(l):
if countodd<5 and num_list[i] % 2 != 0:
sum =num_list[i]
countodd =1
print("The numbers of odd numbers are",countodd)
print("The sum of the odd numbers is",sum)
Комментарии:
1. @S0V22 ты так приветствуешь. И, пожалуйста, проголосуйте за мой ответ.