Day005 - 循环练习与列表基础
列表基础
前提概念
- 容器 - 一个容器型数据可以同时保存多个其他的数据;
- 元素 - 容器中每一个独立的数据;
列表 - List
- 列表时容器型数据类型(序列),[]作为容器的标志,里面的多个元素用逗号隔开;
- 表示方式:[元素1,元素2,…,元素n]
列表的特点
- 列表是可变的(元素的个数,值和顺序可变) - 增、删、改、查;
- **列表是有序的 **- 支持下标操作;
- 列表对元素没有要求,什么类型的数据都可以作为列表的元素;
列表类型
空列表 - list = []
列表 - 可以同时保存类型不同的数据
list3 = ['God', 777, 66.66, [], (2,), None, False]
查看类型
print(type(list1), type(list2)) # <class 'list'> <class 'list'>
查看是否为空值
- 布尔值判断与元素个数判断
print(bool(list1), bool(list2)) # False False
print(len(list1), len(list2)) # 0 0
列表的查询
- 列表的查询目的就是为了获取列表内的元素;
- 获取元素的方式 - 获取单个元素、切片、遍历(一个一个的取);
获取单个元素
语法
列表[下标]
功能
- 获取列表中指定下标对应的元素
说明
- 列表 - 任何结果是列表的表达式(保存列表的变量,具体的列表值);
- [] - 固定写法;
- 下标 - 下标又叫索引,列表中元素在有序序列中的位置信息;
- Python中有序序列中的每个元素都有两组下标值;从前往后正索引(0n),从后往前**负索引**(-1-(n+1));注意:下标不能越界
names = ['甄姬', '貂蝉', '韩信', '吕布', '赵云', '后羿', '鲁班', '狄仁杰']
print(names[1])
遍历
遍历方法
直接获取列表中的每一个元素;
for 变量 in 列表:循环体
names = ['甄姬', '貂蝉', '韩信', '吕布', '赵云', '后羿', '鲁班', '狄仁杰'] for i in names:print(i)
先获取到每个元素的下标值,然后通过下标再获取元素;
for 下标 in range(len(列表)):循环体
names = ['甄姬', '貂蝉', '韩信', '吕布', '赵云', '后羿', '鲁班', '狄仁杰'] for index in range(len(names)):print(index, names[index])
同时获取列表中每个元素和元素对应的下标;
for 下标, 元素 in enumerate(列表):循环体
names = ['甄姬', '貂蝉', '韩信', '吕布', '赵云', '后羿', '鲁班', '狄仁杰'] for index, item in enumerate(names):print(index, item)
练习
统计不及格人数
scores = [89, 67, 56, 90, 98, 30, 78, 51, 99] fail_count = 0 for i in scores:if i < 60:fail_count += 1 print('不及格人数为:', fail_count)
统计列表中整数的个数
list7 = [89, 9.9, 'abc', True, 'abc', '10', 81, 90, 23] num = 0 for i in list7:if isinstance(i, int):# if type(i) == int:print(i)num += 1 print('整数的个数为:', num)
求nums中所有偶数的和
nums = [89, 67, 56, 90, 98, 30, 78, 51, 99] sum1 = 0 for i in nums:if i % 2 == 0:sum1 += i print('偶数的和为:', sum1)
列表添加元素
添加单个元素
语法
列表.append(元素) - 列表的最后添加一个指定元素;
**列表.insert(下标,元素) ** - 在指定的下标的对应元素前插入指定元素;
movies = ['五十度灰', '环大西洋', '富春山居图'] print(movies) movies.append('金刚川') print(movies) movies.insert(2, '沉默的羔羊') print(movies)
批量添加
语法
列表1.extend(列表2) - 将列表2里面的元素全部添加到列表1的尾部;
movies.extend(['让子弹飞', '触不可及', '这个杀手不太冷']) print(movies)
练习
将列表中所有及格的分数提取出来
scores = [89, 67, 56, 90, 98, 30, 78, 51, 99] pass_scores = [] for i in scores:if i >= 60:pass_scores.append(i) print(pass_scores)
周末练习题
基础题
第一周作业
一、选择题
下列变量名中不合法的是?(C)
A. abc
B. Npc
C. 1name
D ab_cd
下列选项中不属于关键字的是?(B)
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的是?B
A.
print('100 - 50')
B.
print(100 - 50)
关于引号,下面选项中使用正确的是?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 _ in range(5):print('you see see, one day day!')
写代码打印数字 11、12、13、… 21
num = 10 while True:num += 1print(num, end=' ')if num == 21:break
写代码打印数字 11,13,15,17,…99
for i in range(11, 100, 2):print(i, end=' ')
写代码打印数字:10、9、8、7、6、5
for i in range(10, 4, -1):print(i, end=' ')
写代码计算:1+2+3+4+…+20 的和
num = 0 for i in range(20):num += i print(num)
写代码计算100以内所有偶数的和
num = 0 for i in range(0, 100, 2):num += i print(num)
写代码统计100~200中个位数是3的数的个数
for i in range(103, 200, 10):print(i, end=' ')
写代码计算
2*3*4*5*...*9
的结果num = 1 for i in range(2, 10):num *= i print(num)
输入一个数,如果输入的数是偶数就打印
偶数
否则打印奇数
num = int(input('请输入一个数:')) if num % 2 == 0:print('这个数是偶数') else:print('这个数是奇数')
统计1000以内能被3整除但是不能被5整除的数的个数。
count = 0 for i in range(3, 1000, 3):if i % 5 != 0:count += 1 print(count)
进阶题
判断101-200之间有多少个素数,并输出所有素数。
prime_num = [] for i in range(101, 200):for j in range(2, i + 1):if i % j == 0:if i == j:prime_num.append(i)else:break print(len(prime_num), prime_num)# 结果 21 [101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
求整数1~100的累加值,但要求跳过所有个位为3的数。
sum1 = 0 for i in range(1, 101):if i % 10 != 3:sum1 += i print(sum1) # 结果 # 4570
有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数
# 审题可知 分母为从第二项开始的裴波纳契数列,分子为第三项开始的裴波纳契数列 n1, n2 = 1, 1 n = 20 Denominator = 0 molecular = 0 for i in range(3, n + 3):n1, n2 = n2, (n2 + n1)if i == n - 1:Denominator = n2if i == n:molecular = n2 print('第20个分数:', molecular, '/', Denominator) # 结果 # 第20个分数: 6765 / 4181
写程序计算 n 的阶乘 n! 的结果
num = int(input('请输入数字:')) factorial = 1 for i in range(1, num + 1):factorial *= i print(num, '的阶乘 n! 的结果:', factorial)
求1+2!+3!+…+20!的和
num = 20 factorial_sum = 0 factorial = 1 for j in range(1, num + 1):# 计算每项的乘积for i in range(1, j + 1):factorial *= i# 计算所有项的乘积factorial_sum += factorialfactorial = 1 print('1+2!+3!+...+20!的和为:', factorial_sum) # 结果 # 1+2!+3!+...+20!的和为: 2561327494111820313
写程序求表达式 a + aa + aaa + aaaa+ … 的结果,其中a是1~9的数字,求和的项数用n来控制。(a和n可以用变量来表示)
例如:a为3, n为5的时候: 3 + 33 + 333 + 3333 + 33333
a = 3 n = 5 num, num1 = 0, 0 for i in range(0, n):# 计算每项的数num += a * 10 ** i# 项数求和num1 += num print(num1) # 结果 # 370368
控制台输出三角形
a.根据n的值的不同,输出相应的形状 n = 5时 n = 4 ***** **** **** *** *** ** ** * *b.根据n的值的不同,输出相应的形状(n为奇数) n = 5 n = 7* **** *** ***** ************c. 根据n的值的不同,输出相应的形状 n = 4112112321 1234321n = 51121123211234321 123454321
# a n = 4 for i in range(5,0,-1):print('*'*i) # b n = 7 for i in range(1, n + 1):if i % 2 != 0:print(' ' * (n - i), ' *' * i) # c # 每行为 行数个1的平方 n = 5 num = 1 num1 = 0 for i in range(n):num *= num * 10 ** inum1 += numnum = 1print(' ' * (n - i), num1 ** 2)
小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元正好花掉,可有哪些购买结合?
for shampoo in range(0, 7):for soap in range(0, 50):for toothbrush in range(0, 21):if shampoo * 15 + soap * 2 + toothbrush * 5 == 100:print('洗发水:', shampoo, '香皂:', soap, '牙刷:', toothbrush)
一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
count = 0 paper_thickness = 0.08 Everest_height = 884813 while True:count += 1 # 统计对折次数paper_thickness *= 2 # 计算每次对折后的厚度if paper_thickness >= Everest_height:break print('对折:', count, '次') # 结果 # 对折: 24 次
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
# 通过前几个月兔子对数的罗列可以得知是一个求裴波纳契数列指定项的题 month_n = 7 m1, m2 = 1, 1 for i in range(2, month_n):m1, m2 = m2, m1 + m2 print('第', month_n, '月有', m2 * 2, '只兔子') # 结果 # 第 7 月有 26 只兔子
将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num = 987654321 lst1 = [] print(num, '= ', end='') for i in range(2, int(num**0.5) + 1): # 设定遍历大于2小于该数开更号的所有数if num % i == 0: # 如果用遍历到的数对该数取余为0就表明这是质因数# 将所有为i的质因数通过循环全取出,再寻找下一个质因数while True:num /= ilst1.append(i)if num % i != 0:break # 如果最后剩下的数不等于1且不能被该数开更号后的任意数整除,这个数就是该数的最大质因数 if num != 1:lst1.append(int(num)) # 对存储质因数的列表进行控制格式打印 for i in range(len(lst1)):if i == len(lst1) - 1:print(lst1[i], end='')else:print(lst1[i], 'x ', end='') # 结果 # 987654321 = 3 x 3 x 17 x 17 x 379721
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
num = 5678 a, b = 0, 0 for i in range(len(str(num))): # 根据数字长度设定循环次数a = num % 10 # 得到低位数num //= 10 # 将高位数降位b = (a + 5) % 10 # 按照题干要求进行计算print(b, end='') # 结果 # 3210
本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少。
year = 5 principal = 10000 APR = 3/1000 for i in range(year): # 按年循环# 前一年的本金加利息等于后一年的本金principal = principal + principal*APR print(principal)# 结果 # 10150.90270405243
输入一个整数,计算它各位上数字的和。(注意:输入的整数可以是任意位)
num = int(input('请输入数字:')) sum1, tmp = 0, 0 for i in str(num): # 数字有多少位就循环多少次tmp = num % 10 # 取该数字个位的数num //= 10 # 将数字的个位抹除sum1 += tmp # 依次将每次循环的个位相加 print('各位上数字的和:', sum1)num = int(input('请输入数字:')) sum1 = 0 for i in str(num): # 将数字作为字符串一个一个取数sum1 += int(i) # 直接将每一位数字相加 print('各位上数字的和:', sum1)
求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)
num1, num2 = 27, 48 # num1 = int(input('请输入第一个数:')) # num2 = int(input('请输入第二个数:')) GCD, LCM = 0, 0 for i in range(1, min(num1, num2) + 1):# 如果两数能被同一个数整除,这个数小于较小的那个数if num1 % i == 0 and num2 % i == 0:GCD = i # 两数相乘后除以他们的公约数就是最小公倍数 LCM = int(num1 * num2 / GCD) print('最大公约数为:', GCD, '|最小公倍数为:', LCM) # 结果 # 最大公约数为: 3 |最小公倍数为: 432
Day005 - 循环练习与列表基础相关推荐
- 【Python笔记】列表基础操作 :创建,增加、删除、查询。附加:练习题。用简单代码解释。
Python:列表基础操作 创建,增加.删除.查询.附加练习题.用简单代码解释. 目录 Python:列表基础操作 演示环境 第一部分:列表(list) 1. 创建空列表 2. 创建只有默认值的列表 ...
- day 4 复习循环练习题和列表
day 4 复习循环练习和列表 使用for和while循环输出 0~100内所有3的倍数. for循环 for x in range(0, 100, 3):print(x) while循环 # 方 ...
- Python之列表基础
** 列表基础 ** 一.序列 (一)基本概念 序列是Python中最基本的一种数据结构. 序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(即索引)并且序列中的数据会按照添加的顺序 ...
- vue.js循环for(列表渲染)详解
vue.js循环for(列表渲染)详解 一.总结 一句话总结: v-for <ul id="example-1"> <li v-for="item in ...
- 三, for循环----文件对象-----函数基础------模块基础
for循环 文件对象 函数基础 模块基础 一,for 循环 1,for循环详解 二.文件对象 1,文件打开方法 2,文件输入 3,文件输出 4,操作文件 三,函数基础 1,函数基本操作 2,函数参数 ...
- [Python学习] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例
通常测试人员或公司实习人员需要处理一些txt文本内容,而此时使用Python是比较方便的语言.它不光在爬取网上资料上方便,还在NLP自然语言处理方面拥有独到的优势.这篇文章主要简单的介绍使用Pytho ...
- 数据结构:哈希表(散列表)基础
哈希表(散列表)基础 引入哈希表 什么是哈西表: 一种具有相同特性的数据元素的集合,每个元素具有唯一标识自己的关键字. 基本原理: 说明: 顺序查找.二分查找或者二叉树的查找是基于待查关键字与表中元素 ...
- bash mysql 循环输出_Bash实用技巧:同时循环两个列表
摘要: 你会学到一种原创的同时循环两个列表的方法.类似于Python或者Haskell的zip函数,非常简洁直观,效果如下: $ paste ( seq 1 5 ) ( seq 129 133 ) | ...
- 5数之和python_Python基本语法5:数字和列表,基础,五
1.数字类型 python中的数字类型: int float bool complex(复数) 1.int 所有整数对应的类型 2.float 所有小数对应的类型,支持科学计数法 3.bool Tru ...
最新文章
- 0寄存器与arm_如何在ARM下进行高效的C编程?
- elasticsearch使用jetty进行简单的权限控制
- boost::container实现emplace进位的程序
- 自定义Redis序列化工具
- UltraESB的首选IDE – IntelliJ IDEA
- linux的yum详解,Linux之YUM 详解
- anaconda安装PIL库报错:PIL库不存在的解决方法
- 我们大学的第一桶金!!(更新中。。。)
- ArcGIS 城市生活区用地适宜性评价(三)
- 1编写偏移量为3的凯撒密码大小写混合加密程序(50分)
- 患癌女子为生女儿放弃治疗 圆母亲梦后离世
- HTML页面转PDF导出加水印并解决字被截断的问题
- Windows 2D 绘图 (GDI, GDI+, Direct2D)
- 连接无线上网服务器能查到吗,网络管理历史-怎样才能不让服务器查到自己上网记录我们单位 – 手机爱问...
- 柔性电子: Triboelectric Nanogenerator摩擦生电
- Git用户手册--GitHub
- 移动端h5图片下载-前端小白初长成
- [转载]集成电路芯片IC封装技术的发展
- ps cs6重启计算机,Photoshop CS6 Extended软件打开电脑蓝屏该怎么办?
- 苹果笔记本python开发第一个程序_Xcode的第一个mac程序