Python基础练习题

1.用while循环,计算1-10 的偶数和

i = 1
summ = 0
while i < 11:
    if i % 2 == 0:
        summ += i
    i += 1
print(summ)    # 输出:30

2.用for循环求1-10的偶数和

summm = 0
for j in range(11):
    if j % 2 == 0:
        summm += j
print(summm)    # 输出:30

3.计算1-10的和 但是从1循环到100

k = 1
summ2 = 0
while k < 100:
    if k > 10:
        break
    summ2 += k
    k += 1
print(summ2)  # 输出:55

4.计算1-100的和 但是从1循环到100 但是10的倍数不加

n = 1
summm = 0
while n < 100:
    n += 1
    if n % 10 == 0:
        continue
    summm += n
  # n += 1 在这个位置时是死循环 在while if continue之间反复横跳
print(summm)    # 输出:4499

5.计算1~100中奇数的和

n = 1
he = 0
while n < 100:
    he += n
    n += 2
print(he)   # 输出:2500

6.计算1~10中偶数的乘积

n = 1
cj = 1
while n < 11:
    if n % 2 == 0:
        cj *= n
    n += 1
print(cj)

7.计算圆的面积

def circle_area:
    S = PI * r * r
    # 不写return 则返回一个None 写多个则以元组的形式返回
    return S, r
if __name__ == '__main__':
    # 计算⚪的面积
    S1, r = circle_area(2)
    print(S1, r)   # 输出:12.56 2
    print(S1)      # 输出:12.56

8.生成99乘法表

# 用for循环写
nine = []
for i in range(1, 10):
    num = []
    for j in range(1, i + 1):
        num.append(f"{j} * {i} = {j * i}")
    nine.append(num)
print(nine)

# 用列表生成式写
ninenine = "\n".join(["\t".join([f"{j} * {i} = {i * j}" for j in range(1, i + 1)]) for i in range(1, 10)])
print(ninenine)
# "\n".join() 是一个字符串方法,用于将序列(如列表、元组等)中的元素以指定的分隔符(在这个例子中是换行符 \n)连接成一个新的字符串。这个方法要求序列中的所有元素都必须是字符串

9.冒泡排序

num = [1, 3, 4, 2, 5, 8, 6, 7]
for j in range(len(num)):  # 0-6
    flag = True   # 标志位
    for i in range(len(num) - 1 - j):
        if num[i] > num[i + 1]:
            flag = False
            num[i], num[i + 1] = num[i + 1], num[i]
    if flag:
        break
print(num)  # 输出:[1, 2, 3, 4, 5, 6, 7, 8]

10.快排

# 快排
# 首先选定一个基准值 然后大的放基准值的右边 小的放基准值的左边
# li = [34, 5, 6, 23, 56, 42]
# [5,6] 23 [34,56,42]
# [5] 6 [] 23 [34,42] 56 []
# [5] 6 [] 23 [34] 42 [] 56 []

def quick_sort(li):
    # 出口
    if len(li) == 1 or len(li) == 0:
        return li
    # 二分法 大的放右边 小的放左边
    mid = li[len(li) // 2]
    left = []
    right = []
    li.remove(mid)
    for i in li:
        if i > mid:
            right.append(i)
        else:
            left.append(i)
    # 左右和右边的列表需要做同样的事情
    return quick_sort(left) + [mid] + quick_sort(right)

if __name__ == '__main__':
    print(quick_sort([34, 5, 6, 23, 56, 42, 342, 12, 35, 3, 4513, 431]))
    # 输出:[3, 5, 6, 12, 23, 34, 35, 42, 56, 342, 431, 4513]

11.阶乘 1-10

def jiecheng(n):
    if n == 1:
        return 1
    return n * jiecheng(n-1)

if __name__ == '__main__':
    print(jiecheng(10))  # 输出:3628800

12.定义一个函数fib,能够指定数量n,生成著名的斐波拉契数列(Fibonacci)

# 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 除第一、二个数之外,后一个数等于前两个数之和
def fib(n):
    # 出口
    if n == 1 or n == 2:
        return 1
    # 自己调用自己
    return fib(n-1) + fib(n-2)

if __name__ == '__main__':
    # for 循环方法
    li = [1, 1]
    for i in range(2, 11):
        li.append(li[i - 1] + li[i - 2])
    print(li)  # 输出:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
    # 调用函数的方法   
    print(fib(10))   # 输出第十个数
    # 输出:55
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值