python作为越来越炙手可热的语言,在深度学习方面运用广泛,因此学习python成了大趋之势,本着语言只是工具的原则,学习一门语言,重要的是了解它的规则,让我们开启python语言学习打卡第一天!
Python学习第一天
循环语句
循环用于重复地执行代码块。
Python中有两种主要的循环:for循环和while循环。
for循环通常比while循环更容易使用,也不那么容易出错,但没有while循环灵活。
for循环
for 变量 in 集合:for循环通常与range()函数一起使用,range()函数返回一个列表,for循环遍历列表中的元素。
range()函数格式:range(start,stop, [step]),参数start表示列表开始值,默认为0;参数stop表示列表结束值,不能缺省,循环到stop-1停止;参数step表示步长,默认值为1。
while循环
while 条件表达式:
功能:当条件表达式为真时,依次执行while中的语句,直到循环表达式的值为假
问题一:求1+2+3+…+100,用for和while两种循环实现
#for 循环实现
sum=0
for i in range(1,101):
sum+=i
print("sum的值是",sum)
#while循环实现
sum=0
i=1
while i<=100:
sum+=i
i+=1
print("sum的值是",sum)
问题二:计算已知和未知数的总和(用for和while两种形式实现)
#已知个数的总和计算(for循环计算)
total=0
n=int(input("请输入要进行加法的个数"))
print('输入的值是'+str(n))
for i in range(1,n+1):
s=input("请输入数字"+str(i)+':')
print('输入的值是'+str(s))
total+=int(s)
print("数字总和为:"+str(total))
#while循环
s=input('请输入一个数字或("undone"):')
print('输入的值是'+str(s))
total=0
while s!='undone':
num=int(s)
total+=num
s=input('请输入一个数字或("undone"):')
print('输入的值是'+str(s))
print("总和是"+str(total))
循环嵌套(嵌套语句输出九九乘法表)
for row in range(1,10):
for col in range(1,10):
prod=row*col
if prod<10:
print(' ',end='')#保证对齐
print(row*col,'',end='')
print("")#换行
条件语句
编写一个程序,处理三个变量 x,y和z,然后输出它们当中最大的奇数。如果其中没有奇数,输出一条信息来说明
print("-------------------------")
a=int(input("请输入第一个数字"))
print('你输入的第一个数字是'+str(a))
b=int(input("请输入第二个数字"))
print('你输入的第二个数字是'+str(b))
c=int(input("请输入第三个数字"))
print('你输入的第三个数字是'+str(c))
if a>b:
a,b=b,a
if b>c:
b,c=c,b
if c%2==1:
print("最大的奇数是:",c)
elif b%2==1:
print("最大的奇数是:",b)
elif a%2==1:
print("最大的奇数是:",c)
else:
print("没有奇数")
跳转语句
Python的跳转语句有:break语句和continue语句
break语句的作用是:结束当前正在执行的循环(for、while),转而执行这些结构后面的语句。
continue语句的作用是:结束当前正在执行的这一次循环(for、while),接着执行下一次循环。即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
continue语句和break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环,不再进行条件判断。
即break跳出上一个整个循环语句 continue跳出当前循环中后续操作步骤,进行下一次循环
例:计算未知个数的总和:(break语句)输出done,启动break语句跳出当前循环
total=0
while True:
s=input('Enter a number (or done)')
print('输入的值是'+str(s))
if s=='done':
break
num=int(s)
total+=num
print("The sum is ",total)
练习:输出1~100之间的不能被7整除的数。
用continue来做
count=0
for i in range (1,101):
if i%7==0:
continue
count+=1
if i<10:
print(" ",end="")
print(str(i),'',end='')
if count%10==0:
print("")
求任意数的平方根(穷举法,二分法的引入)
穷举法:
取较小的步长生成猜测值(顺序地); 检查是否足够接近结果。 反复执行上述步骤。
#穷举法猜测25的平方根
x=25
epsilon=0.01#精度epsilon
step=epsilon**2#步长越来越小
numGuesses=0#猜的次数
ans=0.0
while (abs(ans**2-x))>=epsilon and ans<=x:#精度不够,并且猜的值小
ans+=step
numGuesses+=1
print('numGuesses='+str(numGuesses))
if abs(ans**2-x)>=epsilon:#猜测过头,失败
print(str(x)+'的平方根猜测失败')
else:
print(str(ans)+'接近'+str(x)+'的平方根')
运算了49990次
在穷举法中,步长可以取任意小数值,但是: 如果步长太小了,程序执行会花较长时间 如果步长太大了,可能会跳过最近似的答案
还有更有效的方法。 我们引入二分法
二分法
根据数学定义,x的平方根位于0—x之间。 尽管在穷举法中,我们从0开始进行猜测,但实际上可以取这个范围的中间值。
如果幸运,这个答案恰好能找到
如果猜测值不足够近似,太大或太小怎么办? 如果g**2>x,则g太大,现在应查找:
如果新的g,例如g**2<x,则g太小了,应查找:
每次减少值的范围的一半。
#二分法求解任意值的平方根
x=25
epsilon=0.01
numGuesses=0#猜的次数
low=0.0
high=x
ans=(high+low)/2.0
while abs(ans**2-x)>=epsilon:#判断精度,没在精度epsilon里面
print('low='+str(low)+'high='+str(high)+'ans='+str(ans))
numGuesses+=1
if ans**2<x:
low=ans
else:
high=ans
ans=(high+low)/2.0
print('numGuesses='+str(numGuesses))
print(str(ans)+'与'+str(x)+'的平方根接近')
作为最常用的算法
二分查找算法从根本上减少了计算时间; 二分查找算法必须用于有序的数据。
练习:由用户想一个0—100之间的整数(包括0,不包括100),由计算机来猜。由用户给一个输入,是低了还是高了,使用二分查找算法,计算机将猜到用户的秘密数。
#猜数游戏
import random
low,high=0,100
s=int(input('请输入一个0到100的整数'))
print("你输入的数字是"+str(s))
i=random.randint(0,101)
while True:
print('你想的数字是'+str(i)+'吗?')
a=input('如果比你想的数大,请输入h;如果比你想到数小,请输入l,否则请输入c')
if a=='l':
low=i
i=int((low+high)/2)
elif a=='h':
high=i
i=int((low+high)/2)
else:
print('我猜对了,这个数是'+str(i))
break
蒙特卡洛(Monte Carlo)方法
蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方法。
当所求解问题是某种事件出现的概率,或某随机变量期望值时,可以通过某种“试验”的方法求解。 简单说,蒙特卡洛是利用随机试验求解问题的方法
应用蒙瑞特卡罗方法求解π的步骤
首先构造一个单位正方形和1/4圆。
随机向单位正方形和圆结构抛洒大量点,对于每个点,可能在圆内或者圆外,当随机抛点数量达到一定程度,圆内点将构成圆的面积,全部抛点将构成矩形面积。
圆内点数除以圆外点数就是面积之比,即π /4。
随机点数量越大,得到的π值越精确。
from random import random
from math import sqrt
from time import clock
DARTS=int(input('请输入抛点的数量'))
hist=0
clock()
for i in range(1,DARTS):
x,y=random(),random()
dist=sqrt(x**2+y**2)
if dist<=1.0:
hist+=1#判断有多少个值在圆面积里面
pi =4*(hist/DARTS)
print("pi的值是%s"% pi)
print("程序运行的时间是%-5.5ss"%clock())
总结
第一天对python的循环结构进行了总结,其中还了解了穷举法和二分法,二分法作为很常用的算法,无疑是很适用的,本文只是python的基础语法,具体掌握还需实战