顺序结构程序设计
1.通过键盘输入圆的半径,计算圆的周长和面积:
# 顺序结构程序.py
r = float(input("请输入圆的半径值:"))
pi = 3.14
peri = 2 * pi * r
area = pi * r * r
print("周长=", peri)
print("面积=", area)
分支结构程序设计
1.if语句
if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式。其中最直观、最容易理解的是关系表达式。所谓关系表达式就是两个数值进行比较的式子。
if语句的语法结构为:
**if 表达式:
语句块**
2.if-else语句
if-else语句可以与if语句组合。 else语句在if语句中的条件表达式求值为0或FALSE值时,则执行else语句中的语句块。
if-else语句的语法结构为:
**if 表达式:
语句块
else表达式:
语句块**
1.for循环语句
for循环执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环。
for循环语句的语法结构为:
**for 循环变量 in 遍历结构:
语句块**
1.编写程序实现1-100的累加。
# 循环结构程序设计.py
sum1 = 0
for i in range(1, 101):
sum1 += 1
print("sum1=", sum1)
2.while循环语句
当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。
2.编写一个程序从1开始累加直至大于100为止,并统计累加次数。.
while循环语句的语法格式为:
while表达式:
语句块
# 循环结构程序设计.py
sum1 = 0
i = 1
while sum1 <= 100:
sum1 += i
i += 1
print("sum1=", sum1)
print("累加次数为:", i - 1)
3.break语句
break语句,是中断当前循环,或和label一起使用,中断相关联的语句。
break语句的语法格式为:
break
4.continue语句
continue语句只结束本次循环,而不终止整个循环的执行
continue语句的语法格式为:
continue
3.从键盘输入一个正整数,判断是否是素数。
# 循环结构程序设计.py
n = int(input("请输入一个正整数:"))
b = True
for i in range(2, n // 2 + 1):
if n % i == 0:
b = False
break
if b == True:
print(n, "是素数!")
else:
print(n, "不是素数!")
【例1】:从键盘输入一个字符串,把字符串中的数字字符分离出来并组成一个整数,再乘以数字字符的个数后输出。
问题分析:该程序的关键点是从字符串中截取出各位数字字符并组成一个整数,需要用到字符串的比较和类型转换等操作。
# 日常练习1.py
str1 = input("请输入字符串:")
cnt = 0
str2 = ""
for ch in str1:
if "0" <= ch <= "9":
str2 += ch
cnt += 1
num = int(str2) * cnt
print(num)
说明:python中有3个逻辑运算符可用,包括逻辑运算符
与(and)、逻辑或(or)和逻辑非(not),逻辑运算的结果
是一个逻辑值:Ture或False。
程序运行结果:
【例2】:判断一个整数是否为回文数。所谓回文数是指一个数的正序和逆序值相等,如123321、34643等。
问题分析:要分析判断的数没有固定的位数,所以只能是逐一分解出个位、十位、百位、······,根据具体数的不同,可能只分解出一位,也可能分解出若干位。
# 日常练习2.py
while True:
yn = input("是否继续使用程序:(y/n)\n")
if yn == 'y':
print("欢迎使用!")
n = int(input("n=")) #把键盘输入转换为数值赋给变量n
m = n #将n的值赋给变量m
s = 0 #初赋值为0,准备用于存放n的逆序值
while m != 0: #从m中逐一分解出个位、十位、百位、······
k = m % 10 #循环处理:第一次得到个位置,第二次得到百位值,·····
s = s * 10 + k #计算n的逆序值
m = m // 10 #为分界下一位数做准备
if s == n: #如果n的逆序值等于n的值
print(n, "是回文数!")
else:
print(n, "不是回文数!")
elif yn == 'n':
print("感谢使用!")
break
else:
print("输入错误!")
程序运行结果:
还可以使用对字符串的切片操作完成回文数的判断。
# 日常练习3.py
num = input("num=")
if num == num[::-1]:
print(num, "是回文数!")
else:
print(num, "不是回文数!")
【例3】:画若干个套在一起的正方形。
问题分析:画正方形图需要用到python的标准库turtle,turtle库的主要作用是绘制图形,turtle库提供了多个用于绘图的画笔控制函数和图形绘制函数。
# 日常练习3.py
import turtle # 引入turtle库
def draw(x, y, fd): # 定义一个绘制正方形的的函数
turtle.goto(x, y) # 确定画笔的初始位置
turtle.pendown() # 落下画笔
for i in range(4): # 通过循环画出4条边
turtle.forward(fd) # 画笔向前移动fd个像素和位置
turtle.right(90) # 画笔右转90度
turtle.penup() # 抬起画笔
turtle.setup(500, 350, 325, 175) # 设置绘图窗口的大小和位置
turtle.pencolor("red") # 设置画笔颜色为红色
turtle.pensize(1) # 设置画笔尺寸
square_x = -2 # 第一个正方形开始位置的x坐标值
square_y = 2 # 第一个正方形开始位置的y坐标值
length = 5 # 第一个正方形的边长(像素值)
for k in range(18): # 共画18个正方形
draw(square_x, square_y, length) # 画出一个正方形
square_x -= 5 # 画下一个正方形前,x坐标值减5
square_y += 5 # y坐标值加5
length += 10 # 边长加10
程序运行结果:
【例4】:通过键盘存入一批数据到数组,并统计这一批数据中奇数的个数。
问题分析;把一批数据存入一个列表变量,通过逐一访问列表中的值,统计出奇数的个数。
# 日常练习4.py
arr = input("请输入五个数:") #输入一个一维数组,每个数之间使空格隔开
num = [int(n) for n in arr.split()] #将输入每个数以空格键隔开做成数组
print(num) #打印数组
a = 0 #计数器清零
for i in range(0, 5): #统计奇数的个数
if num[i] % 2 == 1:
a += 1
print(a) #输出结果
运行结果:
【例5】:输出杨辉三角前n行的数据,n的值由用户定。
问题分析:每个数等于它上方两数之和,每行数字左右对称,由1开始逐渐变大,第n行的数字有n项,前n行共[(1+n)n]/2 个数。可以把整个杨辉三角的数据存入一个列表,其中每个元素也是一个列表。
# 日常练习5.py
yanghui_list=[[1],[1,1]] #创建杨辉三角列表,并设定前两行的值
n=int(input("请输入杨辉三角的行数:")) #输入要输出的杨辉三角的行数
for i in range(2,n): #生成第3行至第n行的值
row_list=list() #创建初值为空的空列表
for j in range(i+1): #设定行列表中各元素的值为0
row_list.append(0)
row_list[0]=1 #改第1列的值为1
row_list[i]=1 #改第i+1列的值为1,该行为第i+1行
for k in range(1,i): #改本行中的第2至第i列的值
row_list[k]=yanghui_list[i-1][k-1]+yanghui_list[i-1][k]
yanghui_list.append(row_list) #把第一行数据作为元素追加到杨辉三角列表
for i in range(n): #用二重循环输出杨辉三角的值
for k in range(i+1):
print(yanghui_list[i][k],end="\t")
print("\n")
运行结果: