Python基础100题

第一部分 语法基础

Demo01 摄氏温度转化为华氏温度

题目描述:

输入一个摄氏温度的值,将它转变为华氏温度,并将结果输出

转换的公式为如下:

代码部分:

cel = eval(input())
fah = 9 / 5 * cel + 32
print("%.1f" % fah)

Demo02 计算圆柱体的体积

题目描述:

输入圆柱的半径和高,并利用如下公式计算圆柱体的底面积和体积。

代码部分:

radius,length = eval(input())
area = radius * radius *3.1415926
volume = area * length
print("%.2f" % area)
print("%.2f" % volume)

Demo03 将英尺数转换为米数

题目描述:

输入英尺数然后将它转换为米数,并输出结果,结果保留四位小数点,一英尺等于0.305米

代码部分:

inch = eval(input())
mi = inch * 0.305
print("%.4f" % mi)

Demo04 计算小费

题目描述:

读取小计和酬金率,然后计算小费以及合计金额。例如客户的小计为10元,酬金率为15%,那么小费是 1.5元,合计金额为11.5元

代码部分:

sub,remu = eval(input())
remu *= 0.01
tips = sub * remu
total = sub + tips
print("%.2f" % tips)
print("%.2f" % total)

Demo05 对一个整数中的各位数字求和

题目描述:

读取一个0到1000之间的整数,并计算它各位数字之和

代码部分:

num = eval(input())
ge = num % 10
num //= 10
shi = num % 10
num //= 10
bai = num % 10
nsum = ge + shi + bai
print(nsum)

Demo06 计算年数和天数

题目描述:

输入分钟数,然后将该分钟数转换为年数和天数,假定一年有365天

代码部分:

minutes = eval(input())
hours = minutes // 60
days = hours // 24
years = days // 365
days %= 365
print(years)
print(days)

Demo07 计算能量

题目描述:

水从初始温度加热到最终温度是需要能量的,请计算需要多少能量,公式如下:

这里的M是按千克计的水量,初始温度和最终温度均为摄氏度,热量Q以焦耳计

代码部分:

M = eval(input())
inital = eval(input())
final = eval(input())
Q = M * (final - inital) * 4184
print("%.1f" % Q)

Demo08 分割数字

题目描述:

输入一个四位整数,并以反向顺序显示

代码部分:

num = eval(input())
ge = num % 10
num = num // 10
shi = num % 10
num = num // 10
bai = num % 10 
num = num // 10
qian = num % 10
print(ge)
print(shi)
print(bai)
print(qian)

Demo09 计算三角形的面积

题目描述:

输入三角形的三个顶点坐标,并计算其面积,计算公式如下:

代码部分:

x1,y1,x2,y2,x3,y3 = eval(input())
side1 = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
side2 = ((x3 - x2) ** 2 + (y3 - y2) ** 2) ** 0.5
side3 = ((x1 - x3) ** 2 + (y1 - y3) ** 2) ** 0.5
s = (side1 + side2 + side3) / 2
area = (s * (s - side1) * (s - side2) * (s - side3)) ** 0.5
print("%.1f" % area)

Demo10 显示当前时间

Demo11 计算三角形的三个角

Demo12 最小数量的硬币

Demo13 正多边形的面积

Demo14 计算身体质量指数

题目描述:

BMI是根据体重测量健康的方式,通过以千克为单位的体重除以以米为单位的身高的平方计算而出

BMI指数解读如下:

代码部分:

weight,height = eval (input())
BMI = weight / height ** 2
if BMI < 18.5:
    print("超轻")
elif BMI < 25.0:
    print("标准")
elif Bmi < 30.0:
    print("超重")
else:
    print("肥胖")

Demo15 判定闰年

题目描述:

一个年份如果能被4整除但不能被100整除,或者能被400整除,那么这个年份就是闰年

代码部分:

years = eval(input())
if years % 400 == 0:
    print("yes")
elif years % 4 == 0 and years % 100 != 0:
    print("yes")
else:
    print("no")

Demo16 中彩票

题目描述:

随机产生一个两位数数字,然后用户输入一个两位数数字,并根据以下规则判定用户赢得的奖金是多少。

(1)输入的数字和随机产生的数字完全相同(包括顺序),奖金为10000元

(2)输入的数字和随机产生的数字相同(不包括顺序),奖金为3000元

(3)输入的数字和随机产生的数字有一位数相同,奖金为1000美元

(4)输入的数字和随机产生的数字都不相同,没有奖金,0元

代码部分:

import random
randNum = random.randint(10,99)
print(randNum)
userNum = eval(input())
r1 = randNum % 10
r2 = randNum // 10
u1 = userNum % 10
u2 = userNum // 10
if userNum == randNum:
    print(10000)
elif u1 == r2 and u2 == r1:
    print(3000)
elif r1 == u1 or r1 == u2 or r2 == u1 or r2 == u2:
    print(1000)
else:
    print(0)

Demo17 解一元二次方程

题目描述:

一元二次方程 的解可以使用下面的公式计算:

其中 称为判别式,如果它为正,则方程有两个实数解;为零,方程只有一个实数解;为负,没 有实数解

代码部分:

a,b,c = eval(input())
delt = b ** 2 - 4 * a * c
if delt > 0:
    x1 = (-b + delt ** 0.5) / 2 * a
    x2 = (-b - delt ** 0.5) / 2 * a
    print("%.2f" % x1)
    print("%.2f" % x2)
elif delt == 0:
    x1 = b / -2 * a 
    x2 = x1
    print("%.2f" % x1)
else:
    print("无实数解")

Demo18 解2×2线程方程

Demo19 未来是周几

Demo20 本年中的第几天

Demo21 剪刀石头布 I

Demo22 三角形的周长

Demo23 一周的星期几

Demo24 直线的交点

Demo25 回文数

Demo26 两个矩形

第二部分 循环语句

Demo27 打印数字 I

题目描述:

利用循环,寻找规律,打印如下数字模式:

代码部分:

print("模式A")
for n in range(1, 7):
    for j in range(1, n + 1):
        print(j,end = " ")
    print()

print("模式B")
for n in range(1, 7):
    for j in range(1, 8 - n):
        print(j,end = " ")
    print()

print("模式C")
for n in range(1, 7):
    for k in range(6 - n):
        print(" ", end=" ")
    for i in range(n, 0, -1):
        print(i,end = " ")
    print()

print("模式D")
for n in range(1, 7):
    for k in range(1, n):
        print(" ", end=" ")
    for i in range(1, 8 - n):
        print(i,end = " ")
    print()

Demo28 打印数字 II

题目描述:

利用循环,寻找规律,打印如下数字模式:

代码部分:

for n in range(1, 8):
    for k in range(7 - n):
        print(" " , end=" ")
    for x in range(1 - n, n):
        print(abs(x) + 1 , end=" ")
    print()

Demo29 打印数字 III

题目描述:

利用循环,寻找规律,打印如下数字模式:

代码部分:

for n in range(1, 8):
    for k in range(7 - n):
        print("  " , end=" ")
    for x in range(1 - n, n):
        num = 2 ** (n -abs(x) - 1)
        print("%-2d" % num, end=" ")
    print()

Demo30 打印菱形 I

题目描述:

如下所示,是一个高度为9的菱形:

用户输入菱形高度n,并打印出该高度下的菱形

代码部分:

num = eval(input())
for n in range(1 - (num+1)//2,(num+1)//2):
    x = abs(n)
    for k in range(x):
        print(""  ,end=" ")
    for i in range((num+1)//2 - x):
        print("*" , end=" ")
    print()

Demo31 打印菱形 II

题目描述:

如下所示,是一个高度为9的菱形:

用户输入菱形高度n,并打印出该高度下的菱形

代码部分:

num = eval(input())
for n in range(1, num + 1):
    for k in range(abs(num // 2 + 1 - n)):
        print("" , end=" ")
    for i in range(1, n + 1):
        if i <= n and i + n <= num + 1:
            if i == 1 or i == n or i + n == num + 1:
                print("*" , end=" ")
            else:
                print(" " , end = " ")
    print()

Demo32 打印菱形 III

题目描述:

如下所示,是一个高度为9的菱形

用户输入菱形高度n,并打印出该高度下的菱形

代码部分:

num = eval(input())
for n in range(1 - (num + 1) // 2 , (num + 1) // 2):
    for k in range(abs(n)):
        print("" , end=" ")
    for i in range(num - abs(n) * 2):
        print("*" , end="")
    print()

Demo33 猜数字

题目描述:

计算机随机生成一个[0,100]之间的整数,程序提示用户连续地输入数字直到它与那个随机生成的数字相同,对于用户输入的数字,程序会提示它是过高还是过低

代码部分:

import random
randNum = random.randint(0,100)
while True:
    userNum = eval(input())
    if userNum < randNum:
        print("小了")
    elif userNum > randNum:
        print("大了")
    else:
        print("猜对了")
        break

Demo34 最大公约数 I

题目描述:

输入两个正整数,计算其最大公约数

代码部分:

num1, num2 = eval(input())
min_num = min(num1, num2)
for num in range(num1, 0 , -1):
    if num1 % num == 0 and num2 % num == 0:
        print(num)
        break

Demo35 判断素数

题目描述:

输入一个大于1的正整数,输出Yes表示该数字是素数,否则输出No

代码部分:

num = eval(input())
flag = True         #默认是素数
for n in range(2, num // 2 + 1):
    if num % n == 0:
        flag = False
        break
if flag:
    print("YES")
else:
    print("NO")

Demo36 最小公倍数

题目描述:

输入两个正整数,计算其最小公倍数

例如:4和2的最小公倍数是4,3和5的最小公倍数是15

代码部分:

n1, n2 = eval(input())
min_num = min(n1, n2)       #判断输入的最小数,方便后面进行循环判断

#先求出两个数的最大公约数a
for a in range(min_num, 0 , -1):
    if n1 % a == 0 and n2 % a == 0:
        break

#再求出两个数的最小公倍数b
b = (n1 * n2) // a
print(b)

Demo37 整数的素因子

题目描述:

输入一个正整数,输出多行,每行输出一个素因子(最小因子)

代码部分:

num = eval(input())
while num != 1:
    for n in range (2, num + 1):
        if num % n == 0:
            print(n, end=" ")
            num = num // n
            break

Demo38 完全数

题目描述:

如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数

例如:6 = 3 + 2 + 1,28 = 14 + 7 + 4 + 2 + 1

代码部分:

n = eval(input())
a = n // 2      #先除去自身数值,因为计算因子总值不计算自身
sum = 1     #完全数最后一个数字都为1,在后面的循环语句中没有加上,则总值初始化默认为1
while a != 1:       #判断数值的因子
    sum += a        #因子相加
    a = (a + 1) // 2
if sum == n:
    print(Yes)
else:
    print(No)

Demo39 前50个素数

题目描述:

打印前50个素数,每打印10个素数换行

代码部分:

a = 2   #从2开始计数,判断是否为素数,1不算素数
count = 0   #统计为素数的数量,方便计算和输出前50个素数
while count != 50:  #素数的数量不等于50个时,执行循环
    flag = True     #哨兵,方便判断是否为素数
    for i in range(2, a // 2 + 1):      #判断是否为素数
        if a % i == 0:      #该情况下,该数字不是素数
            flag = False    
            break
    if flag:    #是素数的情况下怎么去处理
        print(a, end = " ")
        count += 1      #素数数量加1
        if count % 10 == 0:
            print()     #每打印十个素数换行
    a += 1

Demo40 计算π

题目描述:

你可以使用下面的数列近似计算π

当i越大时,计算结果越近似于π

代码部分:

i = eval(input())   #用户输入的i值越大,计算结果越近似于π
pai = 0
for i in range(1, i + 1):
    pai += ((-1) ** (i + 1)) / (2 * i - 1)
pai = 4 * pai
print(pai)

Demo41 计算e

题目描述:

你可以使用下面的数列近似计算e

当i越大时,计算结果越近似于e

代码部分:

i = eval(input())   #用户输入的i值越大,输出的结果越近似e
e = 1
fac = 1
for i in range(1, i + 1):
    e += 1 / (fac * i)
    fac = fac * i
    print(fac)
print(e)

Demo42 剪刀石头布 II

题目描述:

代码部分:

Demo43 组合问题 I

Demo44 组合问题 II

Demo45 水仙花数

题目描述:

水仙花数,是一个三位数,且这个数的个位、十位和百位的立方和等于该数字本身

例如:

编写程序,输出所有的水仙花数

代码部分:

ge = 0
shi = 0
bai = 0
for i in range (100, 1001):
    ge = i % 10
    shi = i % 100 // 10
    bai = i // 100
    if i == ge ** 3 + shi ** 3 + bai ** 3:
        print(i)

Demo46 青蛙跳台阶

题目描述:

一只青蛙,一次可以跳一个台阶或者两个台阶,现有n个台阶,问该青蛙有多少种不同的跳法?

例如:两个台阶,有两种跳法(1+1,2);四个台阶,有五种跳法(1+1+1+1,2+1+1,1+2+1, 1+1+2,2+2)

代码部分:

n = eval(input())
if n == 1 or n == 2:
    print(n)
else:
    a = 1
    b = 2
    c = 0
    for i in range(3, n + 1):
        c = a + b
        a = b
        b = c
    print(c)

Demo47 堆叠相加

题目描述:

现有堆叠相加模式:a+aa+aaa+aaaa+aaaaa+......

例如: 2+22+222+2222+22222,其中a为2,且有5组数字

代码部分:

a,n = eval(input())
num = 0
sum = 0
for i in range(n):
    num = num * 10 + a
    sum += num
print(sum)

Demo48 十进制转二进制

Demo49 二进制转十进制

Demo50 十进制转十六进制

题目描述:

输入一个十进制正整数,输出其十六进制形式

代码部分:

num = eval(input())
s = ""  #定义一个s的字符串,方便插入十六进制后的数字
while num != 0:
    y = num % 16    #对数字取余,y输出的是十六进制后的数字
    if y >= 10:     #当y大于10时,要对10~16进行转换
        y = chr(ord('A') + y - 10)      #利用ASCII码,将大于10的数字转换为字母
    s = str(y) + s      #对一个个取余的数字进行排列,后取余的数字放前面
    num = num // 16     
print(s)

Demo51 十六进制转十进制

题目描述:

输入一个十六进制字符串,输出其对应的十进制数字

代码部分:

num = input()
n = 0
sum = 0
a = len(num)
for i in num:
    if ord(i) >= 97:
        n = ord(i) - ord('a') + 10
    else:
        n = int(i)
    a = a - 1
    sum += n * 16 ** a
print(sum)

Demo52 最长公共前缀

Demo53 子串出现的次数

题目描述:

给定两个字符串 s1 和 s2 ,求 s2 在 s1 中出现的次数,字符区分大小写,已匹配的字符不计入下一次匹配(非贪心)

s1 = input()
s2 = input()
n = 0
i = 0
while i <= len(s1) - len(s2):
    if s1[i] == s2[0]:
        j = i + 1
        for k in range(1, len(s2)):
            if s2[k] != s1[j]:
                i += 1
                break
            j += 1
        else:
            n = n + 1
            i = j
    else:
        i += 1
print(n)

Demo54 最长公共子串

题目描述:

给定两个字符串 s1 和 s2 ,求 s1 与 s2 之间的最长公共子串,字符区分大小写

代码部分:

s1 = input()
s2 = input()
length = len(s2)
while length > 0:
    left = 0
    right = length - 1
    while right < len(s2):
        s = s2[left : right + 1]
        if s in s1:
            print(s)
            exit()
        left = left + 1
        right = right + 1
    length = length - 1

Demo55 检测密码

Demo56 回文素数

Demo57 反素数

Demo58 双素数

Demo59 梅森素数

Demo60 平方根的近似求法

第三部分 数组操作

Demo68 豆机器

题目描述:

豆机器,也称为梅花或高尔顿盒子,它是一个统计实验的设备,它是由一个三角形直立板和均匀分布的 钉子构成,如下图所示:

小球从板子的开口处落下,每次小球碰到钉子,它就是50%的可能掉到左边或者右边,最终小球就堆积在板子底部的槽内

编程程序模拟豆机器,提示用户输入小球的个数以及机器的槽数,打印每个球的路径模拟它的下落,然 后打印每个槽子中小球的个数

代码部分:

import random

def creatPath(length):      #生成路径的函数
    path = ""
    for i in range(length):
        if random.randint(0,1) == 0:
            path += "R"
        else:
            path += "L"
    return path

def countR(path):       #判断路径R个数的函数
    count = 0
    for i in path:
        if i == "R":
            count += 1
    return count

def main():
    s = input().split(" ")
    balls = int(s[0])   #球数
    slots = int(s[1])   #槽子数
    box = [0] * slots   #槽子数组
    for i in range(balls):
        path = creatPath(slots - 1)
        print(path)
        n = countR(path) 
        box[n] += 1
    print(box)
    
if __name__ == "__main__":
    main()

Demo72 猜单词游戏

题目描述:

随机产生一个单词,然后提示用户一次猜一个字母,如下示例所示。单词中的每个字母都显示为一个# 号,当用户猜测正确时就会显示确切的字母,当用户完成一个单词时,显示失误的次数并询问用户是否继续玩游戏

创建一个数组存储备选单词,然后随机从中抽取进行游戏

代码部分:

import random

def creatPassWord(word, state):
    passWord = ""
    for i in range(len(word)):
        if state[i]:
            passWord += "#"
        else:
            passWord += word[i]
    return passWord

def isChangeState(word, state, c):
    for i in range(len(word)):
        if c == word[i]:
            if state[i]:
                state[i] = False
            else:
                return False
    return True
        

def main():
    words = ["banana", "beautiful", "apple", "person", "online"]

    while True:
        word = words[random.randint(0, len(words) - 1)]
        state = [True] * len(word)
        passWord = creatPassWord(word, state)
        misseds = 0

        while True in state:
            c = input(f"Enter a letter in word {passWord} > ")
            if c in word:
                if isChangeState(word, state, c):
                    passWord = creatPassWord(word, state)
                else:
                    print(f"{c} is already in the word")
            else:
                misseds += 1
                print(f"{c} is not in the word")
        print(f"The word is {word}. You missd {misseds} time.")
        choice = input("Do you want to guess another word? Enter y or n >")
        if choice == "n":
            break
            

if __name__ == "__main__":
    main()

第四部分 高级容器

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值