循环练习和列表
一.循环嵌套
- 循环嵌套的执行原则:外循环一次,内循环完整
for x in range(5):
for y in range(2, 5):
print(x, y)
二.认识列表
-
容器的基本特征:
- 一个容器型的数据可以同时保存多个其他的数据
-
元素:
- 容器中每一个独立的数据就是一个元素
-
1.什么是列表
- 列表长什么样子:列表是容器型数据类型(序列);将[]作为容器的标志,里面多个元素用逗号隔开: [元素1, 元素2, 元素3,…]
- 列表的特点:列表是可变的(元素的个数、值和顺序可变) - 增、删、改;列表是有序的 - 支持下标操作
- 列表对元素的要求: 没有要求(不管什么类型的数据都可以作为列表的元素)
-
空列表
-
len(列表) - 获取列表中元素的个数 list1 = [] list2 = [ ] print(type(list1), type(list2)) # <class 'list'> <class 'list'> print(bool(list1), bool(list2)) # False False print(len(list1), len(list2)) # 0 0
-
列表可以同时保存多个数据 list3 = [89, 90, 76, 99, 58] print(list3) list5 = [10, 12.5, True, 'abc', [1, 0], {'a': 10}, (20, 9), {20, 9}, lambda x: x*2] print(list5) list6 = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
-
2.查:获取元素
-
查分为三种情况:获取单个元素、切片、遍历(一个一个的取)
获取单个元素 ''' 语法:列表[下标] 功能:获取列表中指定下标对应的元素 说明: 列表 - 任何结果是列表的表达式,比如:保存列表的变量、具体的列表值等 [] - 固定写法 下标 - 下标又叫索引,是元素在有序序列中位置信息。 Python中有序序列中每个元素都有两组下标值,分别是:从前往后从0开始递增的下标值;从后往前从-1开始递减的下标值 注意:下标不能越界 '''
-
遍历
''' 方式1 - 直接获取列表中的每个元素 for 元素 in 列表: 循环体 方式2 - 先获取到每个元素的下标值,然后通过下标再获取元素 for 下标 in range(len(列表)): 循环体 for 下标 in range(-1, -len(列表)-1, -1): 循环体 range(len(列表)) == range(列表中元素的个数) 方式3 - 同时获取列表中每个元素和元素对应的下标 for 下标, 元素 in enumerate(列表): 循环体 '''
-
三、添加元素
-
1.增:添加元素
-
添加单个元素
列表.append(元素) - 在列表的最后添加一个元素 列表.insert(下标, 元素) - 在指定下标对应的元素前插入指定元素
-
-
2.批量增加
-
列表1.extend(列表2) - 将列表2元素全部添加到列表1的后面
-
第一周作业
一、选择题
-
下列变量名中不合法的是?(D)
A. abc
B. Npc
C. 1name
D ab_cd
-
下列选项中不属于关键字的是?(C)
A. and
B. print
C. True
D. in
-
下面哪个选项对应的代码写法是正确的?(C)
A.
print('Python') print('新手村')
B.
print('Python') print('新手村')
C.
print('Python') print('新手村')
D.
print('Python''新手村')
-
下面选项中能打印出50的是?
A.
print('100 - 50')
B.
print(100 - 50)
-
关于引号,下面选项中使用正确的d是? D
A.
print('hello)
B.
print("hello')
C.
print(“hello”)
D.
print("hello")
二、编程题
-
写代码在控制台打印
good good study, day day up!
print('good good study, day day up!')
-
写代码在控制台打印5次
you see see, one day day!
for x in range(5) print ('you see see ,one day day')
-
写代码打印数字 11、12、13、… 21
for x in range(11, 22): print(x)
-
写代码打印数字 11,13,15,17,…99
for x in range(11, 100): print(x)
-
写代码打印数字:10、9、8、7、6、5
for x in range(10, 4, -1): print(x)
-
写代码计算:1+2+3+4+…+20 的和
n = 0 for x in range(1, 21): n += x print(n)
-
写代码计算100以内所有偶数的和
n = 0 for x in range(0, 101, 2): n += x print(n)
-
写代码统计100~200中个位数是3的数的个数
n = 0 for x in range(103, 200, 10): n += 1 print(n)
-
写代码计算
2*3*4*5*...*9
的结果n = 1 for x in range(2, 10): n *= x print(n)
-
输入一个数,如果输入的数是偶数就打印
偶数
否则打印奇数
while True: x = int(input('请输入一个数字')) if x % 2 == 0: print('偶数') continue else: print('奇数') continue
-
统计1000以内能被3整除但是不能被5整除的数的个数。
n = 0 for x in range(0, 1001, 3): n += 1 print(n)
-
判断101-200之间有多少个素数,并输出所有素数。
a = 0 for n in range(100, 201): for x in range(2, n): if n % x == 0: break else: a += 1 print(n) print('有', a, '个')
-
求整数1~100的累加值,但要求跳过所有个位为3的数。
a = 0 for x in range(1, 101): if x % 10 != 3: a += x print(a)
-
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数
pre1 = 1 pre2 = 1 n = 20 for x in range(n): pre1, pre2 = pre2, pre1 + pre2 print(pre2, '/', pre1)
-
写程序计算 n 的阶乘 n! 的结
n = 4 for x in range(1, n): n *= x if n == 1: print('1') break print(n)
-
求1+2!+3!+…+20!的和
a = 1 b = 0 for x in range(1, 21): a *= x b += a print(b)
-
写程序求表达式 a + aa + aaa + aaaa+ … 的结果,其中a是1~9的数字,求和的项数用n来控制。(a和n可以用变量来表示)
a, n, c, b, = 3, 5, 0, 0 for n in range(1, n+1): b += ((a-1) * (10 ** (n-1))) + (10 ** (n-1)) c += b print(c)
-
控制台输出三角形
a.根据n的值的不同,输出相应的形状 n = 5时 n = 4 ***** **** **** *** *** ** ** * * b.根据n的值的不同,输出相应的形状(n为奇数) n = 5 n = 7 * * *** *** ***** ***** ******* c. 根据n的值的不同,输出相应的形状 n = 4 1 121 12321 1234321 n = 5 1 121 12321 1234321 123454321
-
小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元正好花掉,可有哪些购买结合?
for zao in range(50): for ya in range(20): for xi in range(100 // 15 + 1): if xi * 15 + ya * 5 + zao * 2 == 100: print(xi, ya, zao)
-
一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
n = 0 while True: n += 1 if (0.08 * (2 ** n)) >= 8848130: print(n) break
-
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
pre1 = 2 pre2 = 2 n = 3 if n == 1 or n == 2: print(2) else: for x in range(n-3): pre1, pre2 = pre2, pre1 + pre2 print(pre1 + pre2)
-
将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
-
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
n = 7890 for a in range(1, 5): b = (((n % (10 ** a)) // (10 ** (a - 1))) + 5) % 10 print(b, end='')
-
本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少。
n = 5 a = 10000 for n in range(1, 6): a += 0.003 * a print(a)
-
输入一个整数,计算它各位上数字的和。(注意:输入的整数可以是任意位)
-
求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)