首页 > 编程语言 >python练习题(一)

python练习题(一)

时间:2023-10-09 21:13:56浏览次数:52  
标签:练习题 arr python 元素 fib num print 排序

算法题

1.计算1-100之间所有偶数的和

# 定义一个变量用来保存最后的累加和
total_even_sum = 0

# 从1到100的数
for num in range(1, 101):
    # 判断是否为偶数
    if num % 2 == 0:
        total_even_sum += num

print("偶数和是:", total_even_sum)

2.计算1-100的和

# 使用for循环求和
total_sum = 0

for i in range(1, 101):
    total_sum += i

print("和是:", total_sum)

3.计算斐波那契数列

def fibonacci_iterative(n):
    if n < 0:
        return "Input should be a non-negative integer"
    elif n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        # 初始值
        fib_minus_2, fib_minus_1 = 0, 1
        for i in range(2, n + 1):
            fib_current = fib_minus_1 + fib_minus_2
            fib_minus_2, fib_minus_1 = fib_minus_1, fib_current
        return fib_minus_1


# 示例使用
num_terms = 10  # 要生成的斐波那契数列项数
for i in range(num_terms):
    print(fibonacci_iterative(i), end=" ")

4.计算平方根,编写一个程序,计算给定数的平方根。

import math


def calculate_square_root(num):
    """
    math 是 Python 内置的数学模块,提供了许多数学相关的函数和常数。
    sqrt 是 math 模块中的函数,用于计算平方根。
    math.sqrt(16) 表示对数字 16 计算平方根,即计算 √16,结果是 4.0
    :param num: 
    :return: 
    """
    if num < 0:
        return "输入的不能小于0"
    else:
        return math.sqrt(num)


result = calculate_square_root(16)
print("平方根是:", result)

5.冒泡排序

原理:
  • 从第一个元素开始,依次比较相邻的两个元素,将较大(或较小)的元素交换至右侧。
  • 在第一次遍历的过程中,最大(或最小)的元素会浮动到序列的末尾。
  • 重复以上步骤,对剩下的未排序元素进行类似的操作,直到所有元素都排序完成。
def bubble_sort(arr):
    n = len(arr)
    # 外层循环控制遍历次数
    for i in range(n):
        # 内层循环遍历当前未排序部分
        # 并比较相邻的元素,将较大的元素向后移动
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]


# 示例使用
nums = [64, 34, 25, 12, 22, 11, 90]
print("排序之前:", nums)
bubble_sort(nums)
print("排序之后:", nums)

6.二分查找法

  • 初始状态:在已排序的数组中选择一个区间 [left, right],通常初始时选择整个数组作为搜索范围。
  • 计算中间位置:计算中间元素的索引 mid = (left + right) // 2。
  • 比较中间元素:将目标值与中间元素进行比较。
  • 如果目标值等于中间元素,返回中间元素的索引,查找成功。
  • 如果目标值小于中间元素,说明目标值可能在左半部分,更新搜索范围为 [left, mid - 1]。
  • 如果目标值大于中间元素,说明目标值可能在右半部分,更新搜索范围为 [mid + 1, right]。
  • 循环或递归查找: 重复步骤2和步骤3,直到找到目标值或确定目标值不存在。
  • 结束条件:当搜索范围为空 [left, right] 或目标值不存在于数组中时,结束查找。
def binary_search(arr, target):
    left, right = 0, len(arr) - 1
    while left <= right:
        mid = left + (right - left) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1  # 查找的目标不存在


nums = [10, 20, 30, 40, 50, 60]
target = 30
result = binary_search(nums, target)
print("Index of", target, ":", result)

7.选择排序

原理:通过不断选择剩余元素中的最小值(或最大值),然后将其放到已排序部分的末尾。具体步骤如下:
  • 初始状态:将序列分为已排序部分和未排序部分,初始时已排序部分为空,整个序列都是未排序的。
  • 选择最小值:从未排序部分选择最小的元素,与未排序部分的第一个元素交换位置,将该最小元素加入已排序部分。
  • 递归过程:重复步骤2,每次在未排序部分选择最小的元素,与未排序部分的第一个元素交换位置,将该最小元素加入已排序部分。
  • 结束条件:当所有元素都被加入已排序部分,排序完成。
def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        # 找到未排序部分的最小元素的索引
        min_index = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_index]:
                min_index = j

        # 将最小元素与当前位置交换
        arr[i], arr[min_index] = arr[min_index], arr[i]


# 示例使用
nums = [64, 34, 25, 12, 22, 11, 90]
print("排序前:", nums)
selection_sort(nums)
print("排序后:", nums)

标签:练习题,arr,python,元素,fib,num,print,排序
From: https://www.cnblogs.com/mawentao/p/17753126.html

相关文章

  • python练习题(二)
    文件操作1.读取一个文本文件,打印文件内容到控制台。defprint_file_content(file_path):try:withopen(file_path,'r')asfile:content=file.read()print(content)exceptExceptionase:print(f"没有找到文件:{e}"......
  • 2023-02-18-我写了一个python库dumb_meun
    +++title="我写了一个python库:dumb_meun"description=""date=2023-02-18T16:19:07+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["python"]series=[]images=[]+++我之......
  • 2023-02-18-python打包成exe
    +++title="如何把Python程序打包成exe"description=""date=2023-02-18T22:27:09+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["python"]series=[]images=[]+++我需要把我......
  • 2023-02-18-python打包
    +++title="Python打包和上传到pypi"description=""date=2023-02-18T21:59:09+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["python"]series=[]images=[]+++教程用pyth......
  • 2023-02-09-使用simple_term_menu创建更好的python菜单
    +++title="用simple_term_menu创建更好的python菜单"description=""date=2023-02-09T16:25:24+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["python","menu"]seri......
  • python29days
    继承单继承下的属性查找多继承下的属性查找super和mro的使用多态和鸭子类型—————————————————————————————————————————————————面向对象的三大特征:封装,继承,多态什么是继承?继承就是让类和类之......
  • Win10安装VSCode并配置Python环境(完美避开踩过的所有坑)
    安装VScode下载vscode下载链接:https://code.visualstudio.com/Download根据自己的电脑型号下载对应的版本。我下载的是windows/UserInstaller,但是使用时会提示“”。所以,推荐下载SystemInstaller版本。两者区别可以自行百度,或......
  • VS code+python环境部署
    安装VScode下载vscode下载链接:https://code.visualstudio.com/Download根据自己的电脑型号下载对应的版本。我下载的是windows/UserInstaller,但是使用时会提示“”。所以,推荐下载SystemInstaller版本。两者区别可以自行百度,或......
  • 2023-1-0xpython_beautiful_soup
    +++title="python_beautiful_soup"description=""date=2023-03-20T15:50:22+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=[""]series=[]images=[]+++还没写,先留着空位......
  • 2023-01-31python-path
    +++title="使用标准的path处理方法(Python)"description=""date=2023-01-31T15:26:05+08:00featured=falsecomment=truetoc=truereward=truecategories=[""]tags=["python"]series=[]images=[]+++标准方......