【Python每日十题菜鸟版--第二天】

本文提供了一系列适合Python初学者的基础编程练习,包括判断数字奇偶性、识别闰年、计算最大值最小值、检测素数、生成九九乘法表、实现斐波那契数列以及进行进制转换和ASCII码操作。通过这些实例,读者可以巩固和提升Python编程基础。
摘要由CSDN通过智能技术生成

🚀 作者 :“码上有前”
🚀 文章简介 :Python
🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬
在这里插入图片描述

往期精彩内容

【Python基础练习100题–第一篇:基础篇】
【Python基础练习100题–第二篇:文件篇】
【Python每日十题菜鸟版–第一天】
【Python每日十题菜鸟版–第二天】
【Python每日十题菜鸟版–第三天】
【Python每日十题菜鸟版–第四天】
【Python每日十题菜鸟版–第五天】
【Python每日十题菜鸟版–第六天】

🍉前言

这些题都是在菜鸟官网上的练习题,
对于刚学python的新手来说十分的适合,
可以加强和巩固我们的基础。
嘿嘿 一起噶油吧!

1.判断奇偶性

while True:
    try:
        num = int(input("请输入一个数字判断其奇偶性:"))
        break
    except ValueError :
        pass

if num%2 ==0 :
    print(f"{num}是偶数")
else:
    print(f"{num}是奇数")

2.判断闰年

# 判断闰年
while True:
    try:
        year = int(input("请输入想要判断的年份:"))
        print(year)
        break
    except:
        pass

if(year%4)==0:
    if (year % 100) == 0:
        if (year % 400) == 0:
            print(f"{year}是闰年")
        else:
            print("f{year}不是闰年")
    else:
        print("f{year}不是闰年")
else:
    print("f{year}不是闰年")

3. 获取最大值最小值

# 当然我们队元组,列表,字符串,数字,字典等都可以通过遍历的方式去获取最大和最小值
# 但是为了获取最大最小值去遍历貌似没有必要
# 有现成的方法
# 同理获取最小值也是
print(max(1, 2, 3), type(max(1, 2, 3)))  # 3 <class 'int'>
print(max('1', '2', '3'), type(max('1', '2', '3')))  # 3 <class 'str'>
print(max('a', 'b', 'c'), type(max('a', 'b', 'c')))  # c <class 'str'>

# 也可以对元组
print(max(1, 2), type((1, 2)))  # 2 <class 'tuple'>
print(max[1, 2], type([1, 2]))  # TypeError

4. 质数(素数)的判断

# 素数有一个特性:就是出1和自己之外没有其他的除数能被整除
# 该算法的思想就是遍历这个素数范围内的数是否都能被其整除
import math


while True:
    try:
        num = int(input("请输入一个正整数:"))
        break
    except (ValueError, TypeError):
        pass


if num == 1:
    print(f"{num}是个素数")

elif num > 1:
    # 遍历这个数范围内的所有数,判断其能否被这个数整数
    # 使用开根号可以减少循环次数,为什么呢?
    # 假如测试1024 那么遍历到16时算的16 * 64可以得到,然后超过了32之后(32 *32 =1024),
    # 下一次可以被1024整除的就是64,算的64 * 16 = 1024 。和前面那个式子是一样的 ,所以没有必要
    num_sqrt = math.floor(num ** 0.5) + 1
    for v in range(2, num_sqrt):
        if (num % v == 0):
            print(f"这个数{num}不是素数")
            print(f"可以由{v} * {num / v} = {num}得到")
            print(v)
        elif (num % v != 0 and v+1 == num_sqrt):
            print(f"这个数{num}是素数")

5.阶乘

方法一

while True:
    try:
        num = int(input("请输入你想要求的数的阶乘:"))
        break
    except (ValueError,TypeError):
        pass


factorial_sum = 1
if num < 0:
    print(f"{num}没有阶乘")
elif num == 1:
    factorial_sum = 1
else:
    while (num > 1):
        factorial_sum *= num
        num -= 1
print(factorial_sum)

方法二

import math

print(math.factorial(6)) # 720

6.九九乘法表

# 两个循环嵌套,注意空行和空格
# 使用制表符\t会保留一段空格 使输出更加美观
# 使用end="" 是为了行可以在一行输出 
# 最后那一句print()十分的关键 不然就乱了
# 九九乘法表
for index in range(1, 10):
    for rang in range(1, index+1):
        print(f"{index} * {rang} = {index * rang}\t", end="")
    print()

7.斐波那契数列

方法一 :循环计算法(一般方法)

# 这个数列是前两项的和等于第三项
# 当输入的项数控制循环次数
# 一轮循环之后 需要更新第一项和第二项的值
while True:
    try:
        num = int(input("你需要几项:"))
        break
    except ValueError:
        pass


num1 = 1
num2 = 2
count = 2
if num <= 0:
    print("请输入一个正整数")
elif num ==1 :
    print("菲波那切数列:", num1)
else :
    print("菲波那切数列:")
    print(num1,"",num2,end=" ")
    while count< num:
        nth = num1 +num2
        print(nth,end=" ")
        #更新值
        num1 = num2
        num2 = nth
        count += 1

方法二: 递归

# 递归法
while True:
    try:
        num = int(input("你需要几项:"))
        break
    except ValueError:
        pass


def fbnq(num):
    num1 = 1
    num2 = 2
    if num <= 0:
        print("请输入一个正整数")
        return 0
    elif num == 1:
        return 1
    elif num == 2:
        return 2
    else:
        return fbnq(num-1) + fbnq(num - 2)

# fbnq这个函数负责递归计算 

# fbnq_list这个函数负责遍历输出
def fbnq_list(n):
    for i in range(1, n+1):
        print(fbnq(i), end=" ")

fbnq_list(num)

8.阿姆斯特朗数


import math
def is_amusitel_number(num):
    # 判断这个数是否是阿姆斯特朗数
    num_length = len(str(num))
    # print(f"该数字的长度为{num_length}")

    # 加个判断 如果小于十的数 ,他的十位数是为0的
    if num < 10:
        Hundredth_place = 0
        Ten = 0
        the_unit = num

    # 加个判断 如果小于一百的数 ,他的百位数是为0的
    if num < 100:
        Hundredth_place = 0
        Ten = math.floor((num%100)/10)
        the_unit = (num%100)%10
        
    if num < 1000:
        # 求这个数的个,十,百千等位
        the_unit = (num%100)%10
        Ten = math.floor((num%100)/10)
        Hundredth_place = math.floor(num/100) 
    # 带入公式 进行计算
    if the_unit ** num_length + Ten ** num_length + Hundredth_place ** num_length == num :
        return True
    

for num in range(1,1000):
    if is_amusitel_number(num):
        print(f"该数{num}是阿姆斯特朗数")
    else:
        pass

9. 十进制与其他进制相互转换

十进制转其他进制

# 在Number中提供了现有的方法
while True:
    try:
        num = int(input("请输入你要转换的值:"))
        break
    except (ValueError, TypeError):
        pass

print(f"十进制{num} 转换成二进制为{bin(num)}")  # 0b10111
print(f"十进制{num} 转换成十六进制为{hex(num)}")  # 0x17
print(f"十进制{num} 转换成十六进制为{oct(num)}")  # 0o27

其他进制转十进制

while True:
    try:
        num = round(int(input("请输入你要转换的值:")))
        # 判断num是不是整数,如果是小数 的话会报错 ,
        # 我们就将他四舍五入处理
        # 因为int函数第一个参数是字符串,所以我需要将整数转换成字符串
        num = str(num)
        print(f"{num}是十六进制,转换成十进制后是{int(num, 16)}")
        print(f"{num}是八进制,转换成十进制后是{int(num, 8)}")
        break
    except (ValueError, TypeError):
        print(f"{num}不是一个八进制,请输入八进制数")
        break


while True:
    try:
        print(f"{num}是八进制,转换成十进制后是{int(num, 8)}")
        print(f"{num}是二进制,转换成十进制后是{int(num, 2)}")
        break
    except (ValueError, TypeError):
        print(f"{num}不是一个二进制,请输入一个包含0和1的二进制数")
        break

10.ASCII码与对应字符相互转换

# 用户输入ASCII码,并将输入的数字转为整型
c = input("请输入一个字符:")
while True:
    try:
        # 传入一个ascll码,该码是整数
        a = int(input("请输入一个ASCII码: "))
        break
    except (ValueError, TypeError):
        print("请输入一个正整数")


# 将字符转换成对应的十进制整数
print(c + " 的ASCII 码为", ord(c))

# 将一个数字转换成对应的字符
print(a, " 对应的字符为", chr(a))

🍉 学无止境,都看到这了,点个赞关注支持一下呗!嘿嘿(* ̄︶ ̄)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上有前

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值