任务描述
本关任务:给定一个列表,分别统计给定的列表中奇数和偶数的个数。
相关知识
为了完成本关任务,你需要掌握:
列表的基本概念;
range 函数的使用;
for 循环语句。
列表的基本概念
列表是最常用的 Python 数据类型之一。列表的数据项不需要具有相同的类型,创建一个列表,只要把逗号分隔的不同的数据项,使用方括号[]括起来即可。
简单来说,列表是由一系列元素,按特定顺序排列组成。你可以创建包含字母表中所有字母、数字或一些字符串的列表;还可以将其他数据类型放入列表中,甚至可以将另一个列表放在列表中。
list1 = [1, 2, 3, 4] # 创建了一个列表,列表里的元素全部都为整型
list2 = [1, 2.5, "a", "hello", [1, "b"], True] # 列表里的元素可以为任意类型
print(list2)
print(type(list1)) # 打印list1的类型
print(list1)
print(list2)
执行结果:
<class 'list'>
[1, 2, 3, 4]
[1, 2.5, 'a', 'hello', [1, 'b'], True]
访问列表内元素的方法和访问字符串的方式一样,都是通过下标来确定访问元素的位置。
list2 = [1, 2.5, "a", "hello", [1, "b"], True]
value1 = list2[0]
value2 = list2[4]
print(value1)
print(value2)
执行结果:
1
[1, 'b']
在之前学习的 len 函数也可以将列表作为参数,len 函数返回的是列表内的元素个数。
list2 = [1, 2.5, "a", "hello", [1, "b"], True]
print(len(list2))
执行结果:
6
Python 中有一个类型转换函数 list,它可以将部分其他类型的数据转换为列表,例如字符串以及后面将学习到的元组,集合。
string = "hello"
result = list(string)
print(result)
执行结果:
['h', 'e', 'l', 'l', 'o']
range 函数的使用
range 函数可创建一个有序的整数序列。range 函数有三个参数:range([start,] stop[, step]),方括号内[]的内容表示可以省略,其中 start 表示有序序列开始的数,它是可以省略的,当不传 start 值时,它默认为 0,stop 表示结束的数(结束的值取不到,等价于区间的左闭右开),step 表示步长,step 参数的默认值为 1。
reslut = range(5) # range(5)的取值结果为一个0-4的有序序列
print(result)
执行结果:
<class 'range'>
可以看到 range 函数返回的并不是一个列表,当我们想查看 range 返回的有序序列时,不能直接使用赋值语句将它的返回结果赋给一个变量。如果我们想要查看 range 的结果,则需要用到类型转换函数 list 将其转换为列表。
# 传入一个参数
result1 = list(range(5)) # 取0-4的有序序列,等价于range(0, 5)
# 传入两个参数
result2 = list(range(1,5)) # 取1-4的有序序列
# 传入三个参数
result3 = list(range(1, 5, 2)) # 取1-4的有序序列,步长为2
print(result1)
print(result2)
print(result3)
执行结果:
[0, 1, 2, 3, 4]
[1, 2, 3, 4]
[1, 3]
for 循环语句
Python 的 for 语句格式如下所示,它将依次调取序列中的元素并将其分配给变量,然后执行一遍循环体中的所有执行语句,直到整个序列中的元素取完为止。
for 变量 in 序列:
执行语句
···
for 循环的流程图如图 1 所示

图 1
for 循环会依次遍历序列中的成员,执行循环语句。例如:
list1 = ['python','java','c','c++']
for book in list:
print("当前书籍为:%s" % book)
执行结果:
当前书籍为:python
当前书籍为:java
当前书籍为:c
当前书籍为:c++
Python 中的 for 循环通常与 range 函数连用。
for num in range(5):
print(num)
执行结果:
0
1
2
3
4
for 循环还有一些常用的小技巧。举个例子:
list1 = ['python','java','c','c++']
list2 = ['mysql','php','R','golang']
# len(list1)返回的是列表的长度,等价于range(4)
for book in range(len(list1)):
print(list2[book])
执行结果:
mysql
php
R
golang
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。输出的具体要求请查看测试集的预期输出。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
可在右侧 “测试结果”区查看具体的测试集详情。
"""
任务:分别统计给定的列表中奇数和偶数的个数。
"""
list_value = [1, 2, 18, 7, 33, 22, 1045, 98, 78, 36, 10, 111, 105, 4320, 1014, 50, 63, 15, 18, 910, 2010, 3201, 2501, 25, 120, 320]
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
##########Begin##########
# 使用for循环统计给定的列表中奇数和偶数的个数,并按照输出格式打印出结果
##########End##########
print("奇数共%d个,偶数共%d个"% (odd,even))
答案
list_value = [1, 2, 18, 7, 33, 22, 1045, 98, 78, 36, 10, 111, 105, 4320, 1014, 50, 63, 15, 18, 910, 2010, 3201, 2501, 25, 120, 320]
# 初始化奇数和偶数计数器
odd = 0
even = 0
##########Begin##########
# 使用for循环统计给定的列表中奇数和偶数的个数
for num in list_value:
if num % 2 == 1: # 奇数判断:取模2余1
odd += 1
else: # 偶数情况
even += 1
##########End##########
print("奇数共%d个,偶数共%d个" % (odd, even))
2258

被折叠的 条评论
为什么被折叠?



