文章目录
- 1 if分支结构
- 1.1 if语句
- 1.2 if-else语句
- 1.3 if-elif-else语句
- 2 input函数
- 3 for 循环
- 4 while 循环
- 5 习题:最小素数、金字塔、勾股定理
- 5.1 素数问题
- 5.1 金字塔问题
- 5.3 勾股定理输出
1 if分支结构
1.1 if语句
- 执行的流程:
• if语句在执行时,会先对条件表达式进行求值判断,
• 如果为True,则执行if后的语句
• 如果为False,则不执行 - 语法:
if 条件表达式 :
代码块
- 代码块代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
- 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
- 代码块就是一种为代码分组的机制
1.2 if-else语句
- 语法:
if 条件表达式 :
代码块
else :
代码块
- 执行流程:
• if-else语句在执行时,先对if后的条件表达式进行求值判断
• 如果为True,则执行if后的代码块
• 如果为False,则执行else后的代码块)
1.3 if-elif-else语句
• 语法:
if 条件表达式 :
代码块
elif 条件表达式 :
代码块
elif 条件表达式 :
代码块
........
else :
代码块
- 执行流程:
• if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
• 如果表达式的结果为True,则执行当前代码块,然后语句结束
• 如果表达式的结果为False,则继续向下判断,直到找到True为止
• 如果所有的表达式都是False,则执行else后的代码块 - 总结: if-elif-else中只会有一个代码块会执行
2 input函数
- 该函数用来获取用户的输入
- input()调用后,程序会立即暂停,等待用户输入
- 用户输入完内容以后,点击回车程序才会继续向下执行
- 用户输入完成以后,其所输入的的内容会以返回值得形式返回
str = input("从键盘输入你想打印的字符:")
print(str)
3 for 循环
- 语法
for var in object:
循环体语句块
else:
语句块
else部分可以省略;
else部分只在正常结束循环时执行;
如果用break跳出循环,则不执行对应的语句块
- 执行流程
- 依次将可迭代对象 object 中的值赋值给变量 var
- var 每赋值一次,则执行一次循环体语句块
- 循环执行结束时,如果有 else 部分,则执行对应的语句块
4 while 循环
- 循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while循环 和 for循环
- 语法:
while 条件表达式 :
代码块
else:
代码块
5 习题:最小素数、金字塔、勾股定理
5.1 素数问题
- 素数:别称 质数;只有1 和 自身 两个因数的自然数
从键盘任意输入一个正整数n,并找出大于n 的最小素数。
- 方法一
print("从键盘任意输出一个整数,将会得到大于它的最小素数:")
n = int(input("输入一个整数:"))
number = n + 1
while True:
count = 0
for i in range(1,number+1):
if number % i == 0:
count += 1
if count == 2:
print("大于n的最小素数是{}".format(number))
break
number += 1
- 答案验证
- 方法二
print("从键盘任意输出一个整数,将会得到大于它的最小素数:")
n = int(input("输入一个整数:"))
while True:
n += 1
f = True
a = 2
while a < n/2: #在n 的左1/2里面若还能找到因数,则不满足
if n % a == 0:
f = False
break
a += 1
if f:
print("大于n的最小素数是{}".format(n))
break
- 答案验证
5.1 金字塔问题
输出如下图:
- 代码:(方法不唯一,进攻参考)
n = 9 #可更改的初始值,读者可用函数 | input()控制
for i in range(n):
print(" "*(n-i),end='') #输出空格占位符
for j in range(n-i,n+1): #输出左边
print(chr(73-j+1),end='')
for q in range(n,n+i): #输出右边
print(chr(56+q+1),end='')
print() #控制换行
- 输出结果即为上图
5.3 勾股定理输出
输出50以内的勾股数,按组输出,每行显示6组,数字右对齐,各组勾股数无重复
- 代码:
count = 0 #用于计数,以便换行
for x in range(1,50):
for y in range(x,50):
for z in range(y,50):
if x**2+y**2 == z**2:
count += 1
print("{:>2d},{:>2d},{:>2d}".format(x,y,z),end="\t") #{:>2d}空字符填充左边,宽度为2
if count % 6 == 0:
print()
- 输出显示