python 1.2阶乘,9*9,字典,课上代码2

这篇博客介绍了如何使用Python进行四则运算,包括实现九九乘法表和求阶乘的功能。此外,还讨论了如何检查输入数值中是否包含数字3,并展示了冒泡排序的原理和计算过程。最后,提到了如何用函数实现这些功能,以及在有序数列中查找数值的存在性,并提及了递归在阶乘计算中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值