python学习Day-3
一、流程控制 - 控制代码执行顺序
-
顺序结构——代码从上往下依次执行,每条语句只运行依次(默认) age=18
print('成年')
print('未成年')
-
分支结构——根据条件选择执行或者不执行部分代码(使用if)
-
循环结构——让代码重复执行(for)
-
for循环原理:变量依次去序列中取值,取完为止;每取依次,执行一次循环体。 -
for循环的循环次数只与序列中的元素个数有关。 -
语法: for 变量 in 序列:
循环体
说明 - 关键字;固定写法
变量 - 有效变量名(是否已定义不影响执行)
in - 关键字;固定写法
序列 - 容器型数据类型的数据(字典、元组、字符串、列表、集合、迭代器、生成器等)
: - 固定写法
循环体 - 和for保持一个缩进的一条或多条语句;需要重复执行的代码
例:
for x in 'abc':
print('hello world!')
print('======')
"""
执行过程:
第1次:x = 'a' -> print('hello world!')
第2次:x = 'b' -> print('hello world!')
第3次:x = 'c' -> print('hello world!')
循环结束!
hello world!
hello world!
hello world!
"""
-
for循环的两个基本运用场景:
result = 0
for x in range(102, 201, 6):
result += x
print(result)
count = 0
for x in range(1, 1000, 2):
count += 1
print(count)
-
range(产生等差数列的函数)
- range(N)产生0-N的左闭右开区间,差值为1。
- range(A,B)产生A-B的左闭右开区间,差值为1。
>>>range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)
[0, 3, 6, 9]
>>> range(0, -10, -1)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
二、练习题
基础题
1.根据输入的成绩的范围打印及格 或者不及格 。
grade=int(input('请输入分数(百分制):'))
if 0<=grade<60:
print('很遗憾,您未及格QAQ')
else:
print("及格啦")
2.根据输入的年纪范围打印成年 或者未成年 ,如果年龄不在正常范围内(0~150)打印这不是人! 。
age=int(input('请输入年纪:'))
if 0<age<18:
print('未成年')
elif 18<=age<150:
print('成年')
else:
print('不是人')
3.输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数
a=int(input('请输入整数a:'))
b=int(input('请输入整数b:'))
result=a-b
if result%2==1:
print(result)
else:
print('a-b的结果不是奇数')
4.使用for循环输出 0~100内所有3的倍数。
for x in range(0,101,3):
print(x)
for x in range(0,101):
if x%3==0:
print(x)
使用for循环输出100~200内个位数或者十位数能被3整除的数。
for x in range(100,201):
if x%10%3==0 or x//10%10%3==0:
print(x)
使用for循环统计100~200中十位数是5的数的个数
for x in range(100, 201):
if x // 10 % 10 == 5:
print(x)
for x in range(150,160):
print(x)
使用for循环打印50~150中所有能被3整除但是不能被5整除的数
for x in range(51,151,3):
if x%5!=0:
print(x)
使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和
count=0
for x in range(51,151,3):
if x%5!=0:
count+=x
print(count)
统计100以内个位数是2并且能够被3整除的数的个数。
count=0
for x in range(0,101,3):
if x%10==2:
count+=1
print(count)
进阶题
-
输入任意一个正整数,求他是几位数?
注意: 这儿不能使用字符串,只能用循环
num=int(input("请输入正整数:"))
for x in range(0,10):
if num//(10**x)>=1:
continue
print(x)
break
num=int(input("请输入正整数:"))
n=0
x=0
while n<1:
if num//(10**x)>=1:
x+=1
else:
break
print(x)
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字?方和等于该数本身。例如:153是 ?个?仙花数,因为 13 + 53 + 33 等于 153。 for x in range(100,1000):
a=x//100
b=x//10%10
c=x%10
if a**3+b**3+c**3==x:
print(x)
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数) k=0
num=int(input("请输入正整数:"))
for x in range (2,num):
if num%x==0:
k+=1
if k==0:
print('素数')
else:
print('不是素数')
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列 for i in range(1,10):
for j in range(1,i+1):
print(i,'*',j,'=',i*j,end=" ")
print('')
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for small in range(0,101):
for mid in range(0,101):
for big in range(0,101):
if big+mid+small==100 and big*3+mid*2+small/2==100:
print('大马',big,'匹'',''中马',mid,'匹'',''小马',small,'匹','。')
|