每日小练习

文章介绍了Python编程中涉及的基础数学运算,如非递归和递归计算阶乘、圆周长和面积的计算,素数的查找,以及使用Tkinter实现的计算器功能。同时展示了如何判断分数等级和计算特定数列的和。
摘要由CSDN通过智能技术生成

1.求阶乘

非递归

#方法一:非递归
n=4
sum=1
for i in range(1,n+1):
    sum*=i
print(sum)

递归

#递归函数
num=5
def jie_cheng(num):
    if num==1:
        return 1
    else:
        return num*jie_cheng(num-1)
print(jie_cheng(num))

2.求圆的周长

输入半径,求圆的周长

圆的周长=2πr=πd

pi=3.14
r=float(input('请输入半径:'))
c=2*pi*r
print("圆的周长是:",c)

请输入半径:2
圆的周长是: 12.56

请输入半径:5
圆的周长是: 31.400000000000002

3.求圆的面积

圆的面积=π*r*r

pi=3.14
r=float(input("请输入半径:"))
s=pi*r*r
print("圆的面积是:",s)

请输入半径:5
圆的面积是: 78.5

4.素数

判断101 - 200之间有多少个素数,并输出所有素数。\n质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。

import math
count=0
print("101-200之间的素数有:")
for x in range(101,201):
  sqr=int(math.sqrt(x))
  for i in range(2,sqr+1):
      if x%i==0:
        break
  else:
        print(x)
        count+=1
        print("共%d个素数。"%count)

101-200之间的素数有:
101
共1个素数。
103
共2个素数。
107
共3个素数。
109
共4个素数。
113
共5个素数。
127
共6个素数。
131
共7个素数。
137
共8个素数。
139
共9个素数。
149
共10个素数。
151
共11个素数。
157
共12个素数。
163
共13个素数。
167
共14个素数。
173
共15个素数。
179
共16个素数。
181
共17个素数。
191
共18个素数。
193
共19个素数。
197
共20个素数。
199
共21个素数。

import math  # 导入math模块,这个模块提供了数学相关的函数,这里主要用于计算平方根。  
  
count = 0  # 初始化计数器count为0,用于记录101-200之间素数的数量。  
  
print("101-200之间的素数有:")  # 打印提示信息,告知用户接下来将列出101-200之间的素数。  
  
for x in range(101, 201):  # 遍历从101到200(包含200)的所有整数。  
    sqr = int(math.sqrt(x))  # 计算当前数x的平方根,并将其转换为整数,这是因为如果一个数不是素数,那么它必定有一个因子小于或等于它的平方根。  
  
    for i in range(2, sqr + 1):  # 从2开始,到x的平方根(包含平方根)的所有整数进行遍历,用于检查x是否有除了1和它本身以外的因子。  
        if x % i == 0:  # 检查x是否可以被i整除(即余数为0)。  
            break  # 如果x可以被i整除,说明x不是素数,跳出内层循环。  
    else:  # 如果内层循环正常结束(即没有通过break跳出),说明x是素数。  
        print(x)  # 打印素数x。  
        count += 1  # 素数计数器count加1。  
        print("共%d个素数。" % count)  # 打印当前为止找到的素数总数。

5.根据分数划分等级

score=float(input("请输入学生分数:"))
if score>=90 and score<=100:
print("该同学分数等级为A")
elif score>=60 and score<=90:
print("该同学分数等级为B")
elif score>=0 and score<=60:
print("该同学分数等级为C")
else:
print("分数输入错误!!!")

请输入学生分数:98
该同学分数等级为A

6.tkniter-应用(计算器完整代码)

import tkinter
class calculator():
    def __init__(self):
        self.window = tkinter.Tk() # 创建窗口
        self.window.title("计算器") # 给你的小窗口命个名
        self.window.geometry('300x440') # 设置窗口大小
        self.result = tkinter.StringVar() # 输出结果
        self.result.set(0)
        self.result2 = tkinter.StringVar()  # 显示面板显示结果2,用于显示计算过程
        self.result2.set('')
        self.buttonlist = [] # 输入按钮
        self.layout() # 排版设计
        # 操作函数
        self.lists = []  # 设置一个变量 保存运算数字和符号的列表
        self.isPressSign = False  # 添加一个判断是否按下运算符号的标志,假设默认没有按下按钮
        self.isPressNum = False
        self.window.mainloop() # 主窗口循环显示,不然都看不见框……

    def button(self, buttonname, text, x, y, width, height, color, command):
        self.buttonname = buttonname
        self.buttonname = tkinter.Button(self.window, text = text,bg=color,font=("Caribi",11),command = command)
        self.buttonname.place(x = x, y = y,width = width, height = height)

    def layout(self):
        self.label0 = tkinter.Label(self.window, text = '简易计算器', background = "#F8F8FF", font = ("Caribi", 11))
        self.label0.place(x = 0, y = 0, width = 300, height = 20)
        # 输入框
        self.label = tkinter.Label(self.window, font=('微软雅黑', 20), bg='#fff', bd='9', fg='#828282', anchor='se',
                             textvariable=self.result2)
        self.label.place(x = 0, y = 20, width=300, height=120)
        # 结果框
        self.label2 = tkinter.Label(self.window, font=('微软雅黑', 30), bg='#fff', bd='9', fg='black', anchor='se',
                               textvariable=self.result)
        self.label2.place(x = 0, y = 140, width=300, height=60)
        # 按钮
        self.buttonlist = [
            # line 1
            self.button('num7', '7', 0, 200, 60, 60, '#F8F8FF', lambda:self.pressNum('7')),
            self.button('num8', '8', 60, 200, 60, 60, '#F8F8FF', lambda:self.pressNum('8')),
            self.button('num9', '9', 120, 200, 60, 60, '#F8F8FF', lambda:self.pressNum('9')),
            self.button('sign_CE', 'CE', 180, 200, 60, 60, '#F8F8FF', lambda:self.pressCompute('CE')),
            self.button('sign_del', 'Del', 240, 200, 60, 60, '#F8F8FF', lambda:self.pressCompute('Del')),
            # line 2
            self.button('num4', '4', 0, 260, 60, 60, '#F8F8FF', lambda:self.pressNum('4')),
            self.button('num5', '5', 60, 260, 60, 60, '#F8F8FF', lambda:self.pressNum('5')),
            self.button('num6', '6', 120, 260, 60, 60, '#F8F8FF', lambda:self.pressNum('6')),
            self.button('sign_multiple', '*', 180, 260, 60, 60, '#F8F8FF', lambda:self.pressCompute('*')),
            self.button('sign_divide', '/', 240, 260, 60, 60, '#F8F8FF', lambda:self.pressCompute('/')),
            # line 3
            self.button('num1','1', 0, 320, 60, 60, '#F8F8FF', lambda:self.pressNum('1')),
            self.button('num2','2',60, 320, 60, 60, '#F8F8FF', lambda:self.pressNum('2')),
            self.button('num3','3',120, 320, 60, 60, '#F8F8FF', lambda:self.pressNum('3')),
            self.button('sign_plus', '+', 180, 320, 60, 60, '#F8F8FF', lambda:self.pressCompute('+')),
            # line 4
            self.button('sign_percent', '%', 0, 380, 60, 60, '#F8F8FF', lambda:self.pressCompute('%')),
            self.button('num0', '0', 60, 380, 60, 60, '#F8F8FF', lambda:self.pressNum('0')),
            self.button('sign_point', '.', 120, 380, 60, 60, '#F8F8FF', lambda:self.pressCompute('.')),
            self.button('sign_minus', '-', 180, 380, 60, 60, '#F8F8FF', lambda:self.pressCompute('-')),
            # enter
            self.button('enter_button','Enter',240, 320, 60, 120, '#E6E6FA', lambda:self.pressEqual())
        ]

    # 数字函数
    def pressNum(self,num):  # 设置一个数字函数 判断是否按下数字 并获取数字将数字写在显示版上
        if self.isPressSign == False:
            pass
        else:  # 重新将运算符号状态设置为否
            self.result.set(0)
            self.isPressSign = False
        # 判断界面的数字是否为0
        oldnum = self.result.get()  # 第一步
        if oldnum == '0':  # 如过界面上数字为0 则获取按下的数字
            self.result.set(num)
        else:  # 如果界面上的而数字不是0  则链接上新按下的数字
            newnum = oldnum + num
            self.result.set(newnum)  # 将按下的数字写到面板中
    #运算函数
    def pressCompute(self,sign):
        num = self.result.get()  #获取界面数字
        self.lists.append(num) #保存界面获取的数字到列表中
        self.lists.append(sign) #讲按下的运算符号保存到列表中
        self.isPressSign = True
        if sign =='CE':  #如果按下的是'AC'按键,则清空列表内容,讲屏幕上的数字键设置为默认数字0
            self.lists.clear()
            self.result.set(0)
        if sign =='Del': #如果按下的是退格‘’,则选取当前数字第一位到倒数第二位
            a = num[0:-1]
            self.lists.clear()
            self.result.set(a)
    # 获取运算结果函数
    def pressEqual(self):
        curnum = self.result.get() #设置当前数字变量,并获取添加到列表
        self.lists.append(curnum)
        computrStr = ''.join(self.lists) #讲列表内容用join命令将字符串链接起来
        endNum = eval(computrStr)  #用eval命令运算字符串中的内容
        self.result.set(endNum)  #讲运算结果显示到屏幕1
        self.result2.set(computrStr)  #将运算过程显示到屏幕2
        self.lists.clear()  #清空列表内容

if __name__ == '__main__':
    calculator()

7.求一个矩阵对角线元素之和

求一个3*3矩阵对角线元素之和。

# 创建一个空列表list,用于存储矩阵的每一行  
list = []  
  
# 使用for循环创建矩阵的每一行,共3行  
for i in range(3):  
    # 为当前行创建一个空列表a  
    a = []  
  
    # 使用嵌套的for循环获取矩阵的每一列元素  
    for j in range(3):  
        # 通过input函数获取用户输入的浮点数,提示用户输入矩阵第i+1行第j+1列的元素  
        item = float(input("请输入矩阵第%d第%d列元素:"%(i+1,j+1)))  
        # 将用户输入的浮点数添加到当前行的列表a中  
        a.append(item)  
  
    # 将当前行(列表a)添加到总列表list中  
    list.append(a)  
  
# 打印提示信息,表示接下来要计算矩阵对角线元素之和  
print("矩阵对角线元素之和:")  
  
# 初始化一个变量sum为0,用于计算对角线元素之和  
sum = 0  
  
# 使用for循环遍历矩阵的每一行  
for i in range(3):  
    # 将当前行的对角线元素(即第i个元素)加到sum变量中  
    sum += list[i][i]  
    # 打印当前行的对角线元素和加号(如果不是最后一行),或者打印等号和当前行的对角线元素(如果是最后一行)  
    print("%f+"%list[i][i],end="") if i < 2 else print("%f="%list[i][i],end="")  
  
# 打印对角线元素之和  
print(sum)

list=[]
for i in range(3):
    a=[]
    for j in range(3):
        item=float(input("请输入矩阵第%d行第%d列的元素"))
        a.append(item)
        list.append(a)
print("矩阵对角线元素之和:")
sum=0
for i in range(3):
          sum+=list[i][i]
          print(%f+%list[i][i],end="") if i < 2 else print("%f="%list[i][i],end="")
print(sum)

8.回文数

判断一个数是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同

def palindrome(num):
    if num == num[::-1]:
        print("%s是一个回文数"%num)
    else:
        print("%s不是一个回文数"%num)

for i in range(3): # 做3次实验
    num = input("请输入一个正整数:")
    palindrome(num)

请输入一个正整数:45
45不是一个回文数
请输入一个正整数:12321
12321是一个回文数

9. 求1+2!+3!+…+20!的和

求1+2!+3!+…+20!的和

sum=0
for i in range(1,21):
    t=1
    for j in range(1,i+1):
        t*=j
    sum+=t
print("1+2!+3!+…+20!的和是",sum)

1+2!+3!+…+20!的和是 2561327494111820313

# 初始化变量 sum 为 0,用于存储阶乘的和  
sum = 0  
  
# 使用 for循环遍历从1到20的整数  
for i in range(1, 21):  
    # 初始化变量 t 为 1,用于计算当前阶乘  
    t = 1  
      
    # 使用内部for循环计算 i 的阶乘  
    for j in range(1, i + 1):  
        # 乘以当前循环变量 j  
        t *= j  
      
    # 将计算出的阶乘 t 加到 sum 变量中  
    sum += t  
  
# 打印计算结果  
print("1+2!+3!+…+20!的和是", sum)

10.数列求和

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。(想不出来,方法好巧妙借鉴一下)

a=2.0
b=1.0
t=0.0
for n in range(20):
    t=t+a/b
    c=b
    b=a
    a=b+c
print(t)
    

32.66026079864164

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值