num=8
if num%2==0:
print("这个数是偶数") #if条件下的分支语句
print("这个数真是一个偶数")
print("我是一个语句") #无论是否满足if都执行
写一个程序运行四则运算:
a=input("输入:") #输入字符串
list=a.split() ##用空格分离字符串
n1=list[0]
n2=list[2]
if list[1]=="+":
print(n1+n2)
elif list[1]=="/":
print(n1/n2)
print("%0.2f"%(n1/n2))
elif list[1]=="*":
print(n1*n2)
输入:2 * 3
>>>6
输入:9 / 2
>>>4.50
>>>4.5
九九乘法表:
i=1
for i in range(1,10): #外层循环,每一行 或while i<10:
j=1
for j in range(1,i+1): #内层循环 用while 时是:while j<=i:
print("%d*%d=%d"%(j,i,j*i))
j+=1
print(" ")
i+=1
求阶乘:
n=int(input())
i=1
result=1
while i<=n:
result=result*i
i+=1
print(result)
判断输入的数值中是否有3,如果有,输出:有,否则输出:没有
##法一:
a=input()
b=0
for i in(a):
if i=3:
b+=1
if b=0:
print("没有")
else:
print("有")
###法二:
a=int(input())
while a!=0:
if a%10==3:
print("有")
break
a=a//10
if a==0:
print("没有")
else:
print("有")
字典:
#dict 字典,map,键值对:键+值
dict1={ "zhangsan":18 ,"lisi":14 ,
"wangwu":15 ,"liliu":17 }
print(dict1["wangwu"]) #通过key可以获取value值
>>>15
dict1["wangwu"]=29 #可修改
print(dict1["wangwu"])
>>>29
dict1["wuwu"]=32
print(dict1)
>>>{"zhangsan":18,"lisi":14,"wangwu":15,"liliu":17,"wuwu":32} #有则改,无则加
if语句:
num=int(input("请输入一个数字:"))
if num%2==0:
print("偶数") #缩进代表分支 ## if num==0:
print("零") #可以有分支
else:
print("偶数")
else:
print("奇数")
#另一种:
if num==0: ##if 只能出现一次
print("o")
elif num%2==0:
print("偶数") #elif可以多次,if不满足才执行
else:
print("奇数") #1次或0次,最后执行
- 排序
冒泡排序;
一个数列中元素个数为n,需要比较n-1次,相邻的两个元素比较
3 4 10 2 6 冒泡次数 比较次数
3 4 2 6 10 0 4
3 2 4 6 10 1 3
2 3 4 6 10 2 2
2 3 4 6 10 3 1
冒泡次数 =len(nums)-1=4
i len(nums)-1-i
num=[3,10,6,9,4]
for j in range(len(num)-1): #0-4
if num[j]>num[j+1]:
num[j],num[j+1]=num[j+1],num[j]
#第一次排序
print(num)
>>>[3,6,9,4,10]
for j in range(len(num)-1-1): #0-3
if num[j]>num[j+1]:
num[j],num[j+1]=num[j+1],num[j]
print(num)
>>>[3,6,4,9,10]
for j in range(len(num)-1-2): #0-2
if num[j]>num[j+1]:
num[j],num[j+1]=num[j+1],num[j]
print(num)
>>>[3,4,6,9,10]
for j in range(len(num)-1-3): #0-1
if num[j]>num[j+1]:
num[j],num[j+1]=num[j+1],num[j]
print(num)
>>>[3,4,6,9,10]
####把上述式子简化一下
num=[3,10,6,9,4]
for i in range(len(num)-1):
for j in range(len(num)-1-i):
if num[j]>num[j+1]:
num[j],num[j+1]=num[j+1],num
print(num)
函数:
def fun1(n):
a=0
for i in range(1,n+1):
a+=i
print(a)
#调用函数
fun(3)
>>>6
def fun2(n):
a=0
for i in range(1/n+1):
a+=1
return(a)
print(fun2(3))
def fun3(n):
return n*(n+1)//2)
print(fun3(3))
我们把上面的冒泡排序用函数实现一下:
def bubble_sort(nums):
for i in range(len(nums)-1):
for j in range(len(nums)-1-i):
if nums[j]>num[j+1]:
num[j],num[j+1]=num[j+1],num[j]
#调用函数
nums1=[3,10,6,9,4]
bubble_sort(nums1)
print(nums1)
再来定义一个函数,在一个列表list中,如果n存在于list,输出存在,否则输出不存在
def seuqel_search(nums,n):
a=0
for i in range(len(nums)):
if nums[i]==n:
print("存在")
a+=1
break
if a==0:
print("不存在")
num=[1,2,3,4]
m=5
search(num,m)
>>>不存在
对于有序数列,查找某个数值是否存在,二分法
def binary_sort(n,nums):
low=0
high=len(nums)-1
while low<=high:
mid=(low+high)//2
if n>nums[mid]: #数列单调递增
low=mid+1
elif n<nums[mid]:
high=mid-1
else:
break
if low<=high:
print("存在")
else:
print("不存在")
nums1=[1,2,3,4,5]
n=5
binary_sort(n.nums1)
>>>存在
水仙花数:
abc=a^3+b^3+c^3这样的数字
def shui():
for i in range(100,1000):
if i==(i%10)**3+((i//10)%10)**3+(i//100)**3:
print(i,end=" ")
shui()
>>>153 370 371 407
定义函数求阶乘:
def fnn(n): #法一,循环
i=1
while n:
i*=n
n-=1
print(i)
fnn(3)
#法二递归 ,就是一个函数调用自己 n!=n*(n-1)!=n*(n-1)*(n-2)!
def fu(n):
if n==1:
return 1
return n*fu(n-1)
print(fu(3))
>>>6
想用递归的条件(1)必须知道大问题>小问题的递归公式;
(2)小问题的极值是什么,何时终止递归,n=1
(3)递归终止条件一定要在递归公式之前判断
例如:斐波那契数列的实现
def fibo(n):
if n==1 or n==2:
return 1
return fibo(n-1)+fibo(n-2)
print(fibo(3))
>>>2
若想求fibo(40),显然比较麻烦了,所以递归函数的使用限于比较少的数。而用C语言就会快得多。
#include<stdio.h>
int feb(int n){
if (n==1 or n==2)
return 1;
else
return feb(n-1)+feb(n-2);
}
int main()
{
printf("%d\n",feb(40)); /*求f(40)*/
return 0;
}