入门篇:
程序设计的3种基本结构:
顺序结构 —— 是指程序按先后顺序执行,只有执行了前一步,才能执行后一步。例如火车在轨道上行驶,只有过了上一站点才能到达下一站点。
选择结构 —— 又称分支结构,是指程序可以分几条路径执行。例如在一个十字路口处,可以选择向东、南、西、北几个方向行走。
循环结构 —— 又称重复结构,是指程序重复执行某一段代码。例如万米跑,围着足球场跑道不停地跑,直到满足条件时(25圈)才停下来。
循环语句的概念:
使程序根据一定的条件重复执行某一部分程序代码,直到满足终止循环条件为止。
对于循环结构的基本了解:
什么是循环结构 ?其是一种重复执行的程序结构。实际应用中,常会碰到一些需要重复执行的步骤。
(1)手机输入密码,重复尝试直到密码正确或者超出允许次数。
(2)计算全班同学的平均身高,累加所有同学的身高,除以人数 。
(3)高速路的收费窗口。
循环语句的种类:
1)for语句:确定次数循环 2)while语句:条件循环
for循环的理解 :
1)提取三要素:迭代变量 序列 循环体
2)给出序列中元素
3)每次从序列中取一个元素,将其传递给迭代变量,然后执行一次循环体.
4)通常情况下,序列中有几个元素,循环体就执行几次!
实例开展:
1.读入正整数n,检查输入,合理则计算1+2+3+…+n
分析:初始化;和值如何累加?
代码:
n=int(input('请输入正整数n: '))
if n<1:
print('你输入的不是正整数,系统退出')
else:
he=0
for i in range(1,n+1):
he+=i
print('1到',n,'的和值是',he)
效果运行:
>>>
====== RESTART: C:\Users\asus\Desktop\sum1ToN.py ======
请输入正整数n: 15
1到 15 的和值是 120
>>>
2.读入正整数n,打印出1~n之间所有同时满足如下条件的整数:(1)能被3、7整除 (2)不能被5整除 (3)除8的余数是2。
代码:
n = int(input('请输入一个正整数 '))
print('1~',n,'之间满足:能被3、7整除;不能被5整数;除8的余数是2的所有整数如下:')
for i in range(1,n+1):
if i%3==0 and i%7==0 and i%5!=0 and i%8==2:
print(i)
效果:
>>>
== RESTART: C:\Users\asus\Desktop\p_findDigits3578.py ==
请输入一个正整数 1000
1~ 1000 之间满足:能被3、7整除;不能被5整数;除8的余数是2的所有整数如下:
42
378
546
714
882
>>>
综合篇:
知识点1:变化中的列表案例分析
a = ['hi','hello','moring',100,200,300]
for i in a:
print(i)
a.pop()
效果:
>>>
==================== RESTART: C:/Users/asus/Desktop/测试.py ====================
hi
hello
moring
>>>
1.为什么用了a.pop()之后,print只打印出:
hi
hello
moring
后面的100,200,300出哪了?
原因很简单:pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
当i = 0的时候;
打印出hi
与此同时a.pop() 删掉默认最后的一个元素300
当i = 1的时候;
打印出hello
与此同时a.pop() 删掉默认最后的一个元素200(因为上面已经pop掉了300)
以此类推.....
知识点回顾总结:
添加元素:
list.append( ) 在list 末尾增加单个元素。
list.extend( )在list 末尾添加所有元素。
删除元素:
list.pop() 弹出最后一个元素。
list.remove( ) 移除首个元素。
元素排序:
list.sort() 将所有的元素进行原地排序
list.reverse() 将所有的元素进行原地反向排序(逆序)。
知识点2:死循环案例分析
import time,random
a=[0]
for i in a: #让a只执行1此
print(a)
t=random.randint(0,100) #产生1个0到100的随机数,含0和100
a.append(t) #把产生的随机数添加到列表a里面
time.sleep(2) #程序停顿2秒
else:
print('死循环终于结束了')
效果:
>>>
==================== RESTART: C:\Users\asus\Desktop\测试.py ====================
[0]
[0, 32]
[0, 32, 72]
[0, 32, 72, 10]
[0, 32, 72, 10, 5]
[0, 32, 72, 10, 5, 9]
[0, 32, 72, 10, 5, 9, 56]
[0, 32, 72, 10, 5, 9, 56, 95]
[0, 32, 72, 10, 5, 9, 56, 95, 40]
Traceback (most recent call last):
File "C:\Users\asus\Desktop\测试.py", line 7, in
time.sleep(2) #程序停顿2秒
KeyboardInterrupt
>>>
我们发现,如果我们不中止它,程序将会没完没了得一直运行下去。
在程序运行时,遇到死循环该如何中止?
提示:按住ctrl+c 键即可解决。
知识点总结:
import 在python中用于导入相应的函数模块。
该案例用import导入了时间函数模块(time)和随机数函数模块(random),可以用tab键补全查看更多方法详情。
粟子:
import time
time.sleep(5) #停顿5S
.sleep()方法让程序停顿停顿多少秒。
粟子:
import random
random.randint(100,200)
randint 叫随机整数。
.randint(100,200) 的意思是在100和200区间内任意产生1个随机整数数,包含100和200自己本身。
课外小知识:
python的idle 是可以调字体和字体大小的哦,如果你觉得你的程序的字体太小了,可以点击菜单栏的Options--Configure IDLE-- Size/Font-Face
python里面的shell有一个 help()方法,可以查看任意函数的详情。
例如:help(random)
知识点3:打印星星数列,2*4的数列
代码:
for i in range(1,3): #打印2行
for j in range(1,5): #打印4列
print('*',end='')
print()
效果:
>>>
================= RESTART: C:/Users/asus/Desktop/11111111.py =================
****
****
>>>
知识点4:打印乘法表:
代码:
for i in range(1,5):
for j in range(1,i+1):
print(i,'*',j,'=',i*j,end=' \t')
print()
效果:
>>>
================= RESTART: C:/Users/asus/Desktop/11111111.py =================
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
>>>
知识点总结:
1.嵌套循环:外面的循环通常称之为外循环或者大循环,内部的循环称之为内循环或者小循环。
2.循环嵌套的执行过程是:一次外循环对应着完整的一轮内循环。
3.设计和分析嵌套循环时的注意事项:
1)内外循环的迭代变量不要同名,否则容易引起混淆或错。
分析代码时要详细地框出各级对应的循环体。
3)循环层次较深时,我们称之为1级循环、2级循环。
知识点5:读入正整数n,生成并输出一个含有n个0~100(含0和100)之间的随机数的列表,求其平均值(保留两位小数)。
代码:
import random #导入random模块
n=int(input('请输入要想产生的随机数的个数:'))
temp=[] #生成一个空列表
for i in range(n): #循环进行n次
temp.append(random.randint(0,100)) #每次挑取一个随机数放进列表temp里面
#到这里temp列表已经生成完了,temp列表里面有n个随机数,并且都在0~100之间。
print('这些随机数是')
num=0 #用于统计当前行打印了几个数字,初始值为0
for i in temp:
print(i,end="\t")
num += 1 #每打印一个数字,Num+1
if num % 10==0: #每打印10的倍数个数字就来个换行
print()
if num % 10 != 0: #进行精确换行
print()
print('这些随机数的平均数是',round(sum(temp)/len(temp),2))
效果展示:
>>>
========= RESTART: C:\Users\asus\Desktop\python\for2 p_randint.py =========
请输入要想产生的随机数的个数:25
这些随机数是
65 27 27 24 89 2 14 62 20 48
90 44 26 19 19 3 61 37 57 74
63 6 3 39 16
这些随机数的平均数是 37.4
>>>
python中end=" " 的用法:
print默认是打印一行,结尾加换行。
end=' '意思是末尾不换行,加空格。
>>> print('a')
a
>>> print('a',end=' ')
a >>> print('a',end='1234')
a1234>>>
python 常见转义字符:
\t 横向制表符(主要是占位对齐,作用是对齐表格的各列。)
\ 续行符 (在行尾时使用)
\n 换行符
知识点6:打印金字塔任务:读入正整数n,打印n行金字塔。
代码(方法一)
n=int(input('请输入金字塔行数 '))
for i in range(1,n+1):
for j in range(n-i):
print(' ',end='')
for j in range(2*i-1):
print('*',end='')
print()
代码(方法二)
n=int(input('请输入金字塔行数 '))
for i in range(1,n+1):
print(' '*(n+1-i),end='')
print('*'*(2*i-1))
共同效果:
>>>
================= RESTART: C:/Users/asus/Desktop/11111111.py =================
请输入金字塔行数 12
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
>>>
知识点7:读入整数n,倒着输出金字塔。
代码:(方法1)
n=int(input('请输入金字塔行数 '))
for i in range(1,n+1):
for j in range(i-1):
print(' ',end='')
for k in range(2*(n-i)+1):
print('*',end='')
print()
代码(方法2)
n=int(input('请输入金字塔行数 '))
for i in range(n,0,-1):
print(' '*(n-i)+'*'*(2*i-1))
代码(方法3)
n=int(input('请输入金字塔行数 '))
for i in range(1,n+1):
print(' '*(i-1)+'*'*(2*(n-i)+1))
代码(方法4)
n=int(input('请输入金字塔行数 '))
for i in range(n,0,-1):
for j in range(n-i):
print(' ',end='')
for k in range(2*i-1):
print('*',end='')
print()
共同效果:
>>>
================= RESTART: C:/Users/asus/Desktop/11111111.py =================
请输入金字塔行数 5
*********
*******
*****
***
*
>>>
知识点8:读入正整数n,打印n行数字金字塔。
代码:
n=int(input('请输入正整数n: '))
#i用来控制行号,当i为3时表达打印第3行,当i为4时表示打印第4行
for i in range(1,n+1):
#for j这句话用来打印第i行的前面n-1个空格
for j in range(1,n-i+1):
print(' ',end='')
#for k这句话用来打印升序的数字,从1到i-1
for k in range(1,i):
print(k,end='')
#for m这句话用来打印降序的数字,从i到1
for m in range(i,0,-1):
print(m,end='')
#这句话实现第i行的最后换行
print()
效果:
>>>
================= RESTART: C:/Users/asus/Desktop/11111111.py =================
请输入正整数n: 5
1
121
12321
1234321
123454321
>>>
知识点9:读入正整数n,打印n行菱形数字金字塔。
代码:
'''
读入正整数n,打印n行,每行显示行号和一串星号,第k行k个星号,
注意第一个星号的对齐。
这道题目在做题之前要分析数字金字塔的结构:
如果n=5则打印5行,即打印n行
对于其中任意第i行,可以观察到:
首先打印n-i个空格,然后打印升序然后打印降序,最后换行
'''
n=int(input('请输入正整数n: '))
#i用来控制行号,当i为3时表达打印第3行,当i为4时表示打印第4行
for i in range(1,n+1):
#for j这句话用来打印第i行的前面n-i个空格
for j in range(1,n-i+1):
print(" ",end='')
#for k这句话用来打印升序的数字,从1到i-1
for k in range(1,i):
print(k,end='')
#for m这句话用来打印降序的数字,用i到1
for m in range(i,0,-1):
print(m,end='')
#这句话实现第i行的最后的换行
print()
#这里开始打印倒着的部分
for i in range(n-1,0,-1):
#for j这句话用来打印第i行的前面n-i个空格
for j in range(1,n-i+1):
print(" ",end='')
#for k这句话用来打印升序的数字,从1到i-1
for k in range(1,i):
print(k,end='')
#for m这句话用来打印降序的数字,用i到1
for m in range(i,0,-1):
print(m,end='')
#这句话实现第i行的最后的换行
print()
效果:
>>>
============ RESTART: C:\Users\asus\Desktop\h_numPyramidUandD.py ============
请输入正整数n: 5
1
121
12321
1234321
123454321
1234321
12321
121
1
>>>
知识点10:读入正整数n和m,生成m个1到1000之间的随机整数,显示这些随机数中能被n整除的数字。
代码:
'''
读入正整数n和m,生成m个1到1000之间的随机整数,
显示这些随机数中能被n整除的数字
'''
import random
n=int(input('请输入除数(int): '))
m=int(input('请输入随机数的个数(int): '))
#生成m个随机数放入列表t中
t=[]
for i in range(m):
t.append(random.randint(1,1000))
print('这些随机数是',t)
ok=[]
#删除列表t中不能被n整除的随机数
for i in t:
if i%n==0:
ok.append(i)
if len(ok)==0:
print('没找到合适的随机数')
else:
print('能整除的数有',ok)
效果:
>>>
============= RESTART: C:\Users\asus\Desktop\h_findAllRandom.py =============
请输入除数(int): 100
请输入随机数的个数(int): 20
这些随机数是 [151, 580, 130, 439, 177, 575, 647, 252, 755, 327, 215, 672, 313, 59, 256, 743, 747, 549, 351, 803]
没找到合适的随机数
>>>
知识点11:打印矩形9-9乘法表。
代码:
print(' '*16+'Multiplication Table')
headline=' '*3;
for i in range(1,10):
headline+='%5d'%i
print(headline)
print('-'*50)
for i in range(1,10): #控制行
currLine=str(i)+'| '
for j in range(1, 10): #控制列
currLine+='%5d'%(i*j)
print(currLine)
运行效果:
>>>
=========== RESTART: C:\Users\asus\Desktop\h_printMultiTableV2.py ===========
Multiplication Table
1 2 3 4 5 6 7 8 9
--------------------------------------------------
1| 1 2 3 4 5 6 7 8 9
2| 2 4 6 8 10 12 14 16 18
3| 3 6 9 12 15 18 21 24 27
4| 4 8 12 16 20 24 28 32 36
5| 5 10 15 20 25 30 35 40 45
6| 6 12 18 24 30 36 42 48 54
7| 7 14 21 28 35 42 49 56 63
8| 8 16 24 32 40 48 56 64 72
9| 9 18 27 36 45 54 63 72 81
>>>