Python100道练习题

Python100道练习题

BIlibili

1、两数之和

py 复制代码
num1 = 20
num2 = 22

result = num1 + num2

print(result)

2、一百以内的偶数

py 复制代码
list1 = []

for i in range(1,100):
    if i % 2 == 0:
        list1.append(i)
print(list1)

3、一百以内的奇数

py 复制代码
# 方法一
list1 = []
for i in range(1,100):
    if i % 2 != 0:
        list1.append(i)
print(list1)

# 方法二
list2 = [i for i in range(1,100) if i % 2 != 0]
print(list2)

# 方法三
list3 = [i for i in range(1,100,2)]

4、判断素数

编写程序,判断某一个数是否为素数。所谓素数指的是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数:

py 复制代码
a = 37
flag = True
for i in range(2,a):  # 注意range 是左闭右开
    if a % i == 0:
        flag = False
        break  # 一旦判断成功后,后面就没必要继续了
if flag:
    print('a不是素数')
else:
    print('a是素数')

5、求阶乘

编写程序,求出某个自然数的阶乘。一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!

py 复制代码
a = 5

# 方法一
if a == 0 or a == 1:
    print('阶乘为: 1')
else:
    sum = 1
    for i in range(2,a+1): # 包括本身
        sum *= i
    print('阶乘为:',sum)



# 方法二 递归
def fun(x):
    if x == 1:
        return 1
    else:
        return x * fun(x - 1)


print(fun(a))
# 方法三 math.factorial()
import math
print(math.factorial(a))

6、求圆的周长

程序编写:输入半径,求出圆的周长

圆的周长:2πr

py 复制代码
import math

r = float(input('请输入圆的半径:'))
girth = 2 * r * math.pi
print('周长是',round(girth,2))  # round 保留两位小数

7、求圆的面积

程序编写:输入半径,求出圆的面积

圆的周长:πrr

py 复制代码
import math

r = float(input('请输入圆的半径:'))
girth = r * r * math.pi
print('面积是',round(girth,2))  # round 保留两位小数

8、求直角三角形斜边的边长

编写程序:输入两个直角边,求出三角形斜边的长度

勾股定理:a^2^ + b^2^ = c^2^

py 复制代码
import math

a = 3
b = 4
cfang = math.pow(a,2) + math.pow(b,2)
# 或者 math.pow(cfang,0.5) or cfang ** 0.5
print('三角形斜边的长度: ',math.sqrt(cfang))

9、比较三个数大小

编写程序:输入三个数,从小到大输出三个数

py 复制代码
a = int(input('请输入第一个数:'))
b = int(input('请输入第二个数:'))
c = int(input('请输入第三个数:'))

lst = [a,b,c]
# 方法一:list.sort() ,sort(reverse=False) 默认False 升序
lst.sort()
print(lst)

# 方法二:sorted(lst)
list1 = sorted([a,b,c])
print(list1)

10、找出区间内的素数

编写程序,输入整数a、b表示一个闭区间,找出该区间内的所有素数并打印。

py 复制代码
# 判断素数函数
def prime(x):
    flag = True
    for i in range(2, x):
        if x % i == 0:
            flag = False
            break 
    return flag

# 闭区间
a = 10  # 左端点
b = 20  # 右端点
num_list = []
for i in range(a,b+1):
    if prime(i):
        num_list.append(i)

print(num_list)

11、组合数字

有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

py 复制代码
# 方法一
str1 = '1234'
for i in str1:
    for j in str1:

        for k in str1:
            if i == j or i == k or j == k:
                continue
            print(i+j+k)

# 方法二
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if not(i == j or i == k or j == k):
                print(f'{i}{j}{k}')

12、打印乘法口诀表

py 复制代码
for i in range(1,10):
    for j in range(1,i+1):
        print(f'\t{j} * {i} = {i * j}',end=' ')
    print()

13、水仙花数

水仙花数:是一个三位数,各位数字立方和等于该数字本身。

py 复制代码
import math
# 水仙花数:是一个三位数,各位数字立方和等于该数字本身。

num_list = []
for i in range(100,1000):
    hundred = i // 100
    ten = i // 10 % 10
    piece = i % 10
    if (math.pow(hundred,3) + math.pow(ten,3)+ math.pow(piece,3)) == i:
        num_list.append(i)

print(num_list)

14、反向输出四位数

编写程序,输入一个四位整数,反对输出对应四位数

py 复制代码
# 编写程序,输入一个四位整数,反对输出对应四位数

st = input('请输入一个四位数')
st = st[::-1]
print(int(st))

15、判断字母

编写程序,输入字符,判断是否为字母

# 编写程序,输入字符,判断是否为字母

a = input('请输入字符: ')
result = a.isalpha()  #  判断字母
if result:
    print(f'{a}是字母')
else:
    print(f'{a}不是字母')

16、判断三角形

编写程序,输入三组数据,判断能否构成三角形的三条边

py 复制代码
a, b, c = [4, 5, 6]

if a <= 0 or b <= 0 or c <= 0:
    print('输入的数据不合法')

if a + b < c or a + c < b or b + c < a:
    print('不构成三角形')
else:
    print('构成三角形')

17、完数

个数如恰好等于除了它以外的因子之和,这个数就称为"完数"。编程序找出1000以内的所有完数,(6是一个"完数",它的因子是1,2,3)。

py 复制代码
for i in range(1,1000):
    sum = 0
    for j in range(1,i):
        if i % j == 0:
            sum += j
    if sum == i:
        print(i,'是完数')

18、找出质数因子

输入一个正整数,输出它的所有质数因子(如180的质数因子为2、2、3、3、5)。

多个素数的乘积

从第一个数开始,也就是说从2开始,整除一下输入的数

py 复制代码
a = int(input('请输入一个自然数:'))
y = 2

list1 = []
while a != y:
    if a % y == 0:
         list1.append(y)
         a /= y
    else:
        y += 1

list1.append(int(a))  # 最后剩下的a
print(list1)

19、海伦公式求三角形面积

海伦公式是利用三角形的三条边的边长直接求三角形面积的公式

p = ( a + b + c ) / 2 p = (a+b+c)/2 p=(a+b+c)/2

S = p ( p − a ) ( p − b ) ( p − c ) S = \sqrt{p(p-a)(p-b)(p-c)} S=p(p−a)(p−b)(p−c)

py 复制代码
import math

a = 10
b = 10
c = 10

p = (a+b+c)/2
S = math.sqrt(p * (p-a) * (p-b) * (p-c))
print('三角形的面积是:',round(S,2))

20、判断某年某天

输入某年某月某日,判断这一天是这一年的第几天

py 复制代码
import datetime

# map 把年月日都转成 int类型
year,month, day = map(int, input('请输入年月日: ').split('-'))

# 拿到当年的第一天
yundan = datetime.datetime(year,1,1) #
now = datetime.datetime(year, month, day)

print((now - yundan).days + 1)

21、斐波那契数列

py 复制代码
# 递归
def fib(x):
    if x == 1 or x == 2:
        return 1
    else:
        return fib(x-1) + fib(x-2)

print(fib(6))

# 非递归
n = 6
fibs = [1,1]
for i in range(2, n):
    # fibs.append(fibs[-1] + fibs[-2])
    fibs.append(fibs[i - 1] + fibs[i - 2])
print(fibs[n-1])

22、复制列表

将一个列表中的数据,复制到另一个列表中

py 复制代码
import copy

list1 = [1,2,3,4]
list2 = copy.copy(list1)
print(list2)

list1 = [1,2,3,4]
lsit2 = list1.copy()
print(lsit2)

23、暂停后输出

暂停一段时间后输出

import time

time.sleep(1) # 以秒为单位
print("Hello Python! ")

24、成绩if语句

利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示

py 复制代码
 score = int(input('请输入你的成绩: '))

flag = ''
if score >= 90:
    flag = "A"
elif score >= 60:
    flag = "B"
else:
    flag = 'C'
print(flag)

25、统计字符

输入一行字符,分别统计出其中英文字母空格、数字和其它字符的个数。

py 复制代码
# 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

string = input('请输入一段字符串:')
char,space,number,other = 0,0,0,0

# 方法一
for i in string:
    if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
        char += 1
    elif i == ' ':
        space += 1
    elif '0' <= i <= '9':
        number += 1
    else:
        other += 1
        
# 方法二:
for i in string:
    if i.isalpha():  # 判断字符串
        char += 1
    elif i.isdigit():  # 判断数字
        number += 1
    elif i.isspace():  # 判断空格
        space += 1
    else:
        other += 1
print(f'英文字母有{char}个,数字有{number}个,空格有{space}个,其他字符有{other}个。')

26、落体反弹问题

球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

py 复制代码
n = 100
count = 0
list1 = []

# 方法一
while count < 10:
    if count == 0: # 第一次弹跳,马上要落下来
        list1.append(n)
        n /= 2
        count += 1
    else:
        list1.append(2 * n)  # 这是一个 上下的距离
        n /= 2
        count += 1
print(sum(list1))

# 方法二
# 球的高度
height = 100
# 落地的次数
frequency = 10

sum = 0
for i in range(1,frequency):
    sum += height  # 落下
    height /= 2
    sum += height  # 上来
    print(f'第{i}次下落,高度为:{height}')
print(sum)

27、猴子吃桃问题

猴子吃桃问题:猴子第一天摘下若干个桃子当即吃了一半,还不瘾,又多吃了一个第天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少

py 复制代码
# 每天吃了 一半 + 1, 第十天就剩下1个了, 求第一天摘了多少

x = 1
for i in range(1, 10):
    x = (x + 1) * 2

print(x)

28、求指数数列的和

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

py 复制代码
# 方法一
fibs = [1,1]

for i in range(20):
    fibs.append(fibs[-1] + fibs[-2])
    
sum = 0
for i in range(2,22):
    sum += fibs[i] / fibs[i-1]
print(sum)

# 方法二
sum = 0  # 最后的结果
up = 2  # 分子
down = 1  # 分母

for i in range(20):
    sum += up/down
    up, down = down + up, up

print(sum)

29、求各个阶乘的和

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

py 复制代码
sum = 1
# 方法一
for i in range(2,21):
    target = 1
    for j in range(1,i + 1): # 阶乘包括本身
        target *= j
    sum += target
print(sum)

import math
sum = 0
for i in range(1,21):
    sum += math.factorial(i)
print(sum)

30、年龄急转弯

有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

py 复制代码
def func(n):
    if n == 1:
        return 10
    else:
        return func(n - 1) + 2
    
print(func(5))

31、判断回文数

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

py 复制代码
number = '12321'

# 方法一
if number[0] == number[-1] and number[1] == number[-2]:
    print(True)
else:
    print(False)

# 方法二
number = int(number)
w = number // 10000
q = number // 1000 % 10
ten = number % 100 // 10
g = number % 10
if q == ten and w == g:
    print('是回文数')
else:
    print('不是回文数')

# 方法三
a = '12321'
b = a[::-1]  # 字符串反转
if a == b:
    print('是回文数')
else:
    print('不是回文数')

32、判断星期几

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

星期一 Monday、星期二 Tuesday、星期三Wednesday、星期四Thursday、星期五 Friday 、星期六 Saturday、星期日Sunday.

py 复制代码
weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
first_letter = input("请输入星期几的第一个字母(大写):")
matched_days = []
for day in weekdays:
    if day[0] == first_letter:
        matched_days.append(day)

if len(matched_days) == 1:
    print("是", matched_days[0])
elif len(matched_days) > 1:
    second_letter = input("有多个匹配,请输入第二个字母(小写):")
    final_matched = []
    for m_day in matched_days:
        if len(m_day) > 1 and m_day[1] == second_letter:
            final_matched.append(m_day)
    if len(final_matched) == 1:
        print("是", final_matched[0])
    else:
        print("无法准确判断,请输入更详细信息")

33、相反顺序输出列表

按相反的顺序输出列表的值。

py 复制代码
list1 = [1,2,3,4,5,6,7]
list1.reverse()  # 对原本的数据进行修改,没有返回值
# 方法一
print(list1)


# 方法二
print(list1[::-1])

34、对十个数进行排序

对十个数进行排序

py 复制代码
a = map(int, input('请输入10个数字').split())
a = list(a)
a.sort()
print(a)

35、求矩阵主对角线元素之和

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

py 复制代码
a = []
index = 0
sum = 0

for i in range(3):
    a.append([])
    for j in range(3):
        index += 1
        a[i].append(index)
        # 求对角线元素之和
        if i == j:
            sum += a[i][j]
print(a)
print(sum)

# 方法二
import numpy as np
arr = np.arange(9).reshape(3,3)
sum_list = np.diagonal(arr)   # 把对角线取出来
print(sum(sum_list))

36、有序列表添加数据

有一个已经排好的序列。现输入一个数,要求按原来的规律将它插入数组中。

py 复制代码
list1 = [1,3,8,10,20,50]

n = int(input('请输入数据:'))

if list1[0] < list1[-2]:
    list1.append(n)
    list1.sort()
else:
    list1.append(n)
    list1.sort(reverse=True)

print(list1)

37、变量值互换

py 复制代码
a = 5
b = 10

# 方法一
a,b = b,a

# 方法二
temp = a
a = b
b = temp

38、产生随机数

生成随机数

py 复制代码
import random

a = random.random() # [0,1) float
b = random.randint(1,10) # [1,10] int
c = random.randrange(1,10,3) # 比 randint 多了一个步长
print(a,b,c)

39、lambda表达式

使用lambda来创建匿名函数

py 复制代码
fun = lambda x, y: x ** y

print(fun(2, 4))

40、温度转换

输入摄氏度,将其转为华氏度

输入华氏度,将其转为摄氏度。

华氏温度与摄氏温度转换公式为:

华氏温度=摄氏温度x1.8+32。

py 复制代码
a = input('摄氏度请按1,华氏度请按2: ')

if a == '1':
    b = float(input('请输入摄氏度: '))
    result = b * 1.8 + 32
    print(f'你输入的是摄氏度{b}, 转换为华氏度是{result}')
if a == '2':
    b = float(input('请输入华氏度: '))
    result = (b - 32) / 1.8
    print(f'你输入的是华氏度{b}, 转换为摄氏度是{result}')

41、按位与

py 复制代码
# 运算规则: 0&0=0 0&1=0  1&0=0  1&1=1

'''
3 => 0011
5 => 0101
3 & 5 => 0001  => 1

4 => 0100
12 => 1100
4 & 12 => 0100  =>4
'''

print(3 & 5) # 1
print(4 & 12) # 4

42、按位或

py 复制代码
# 运算规则: 0|0=0, 0|1=1, 1|0=1, 1|1=1
'''
3 => 0011
7 => 0111
3|7 => 0111 => 7
'''
print(3 | 7) # 7

43、按位异或

py 复制代码
# 相同为0,不同为1
# 0^0=0  0^1=1  1^0=1  1^1=0
'''
3 => 0011
9 => 1001
3^9 => 1010 => 10
'''
print(3 ^ 9) # 10

44、按位取反

py 复制代码
# 按位取反运算符(~): 对数据的每个二进制位取反,即把0变成1,把1变成0
# ~x = -(x+1)
'''
9 => 00001001
  => 11110110
  => 10001001
  => 10001010 在这里加1
  => -10
'''
print(~9)  # -10
print(~10)  # -11
print(~(-3))  # 2
# 用十进制计算:正变负,负变正,然后减1

45、计算机字符串的长度

py 复制代码
a = input()

print(len(a))

length = 0
for i in a:
	length += 1
print(length)

46、杨辉三角

py 复制代码
a = []  # 外围

for i in range(10):
    a.append([])
    for j in range(10):
        a[i].append(0)

for i in range(10):
    a[i][0] = 1
    a[i][i] = 1

for i in range(2,10):
    for j in range(1,i):
        a[i][j] = a[i-1][j] + a[i-1][j-1]

for i in range(10):
    print()
    for j in range(i+1):
        print(a[i][j], end='  ')

47、查找字符串

py 复制代码
a = 'Hello World!'
b = 'World'
print(a.find(b))

48、猜数字游戏

py 复制代码
import random

target = random.randint(0,99)
times = 7
print('猜数字游戏开始,请猜一百以内的整数~')
while times != 0:
    num = int(input('请输入你要猜的数字: \n'))
    times -= 1
    if num < target:
        print('猜小了')
    elif num > target:
        print('猜大了')
    else:
        print(f'恭喜你才对了,答案是{target}')

if times == 0:
    print('很遗憾,机会用完了.')

49、第一个只出现一次的字符

在一个字符串中找到第一个只出现一次的字符,并返回它的位置,如果没有则返回 -1(需要区分大小写).(从0开始计数

py 复制代码
string = 'Hello World'
a = -1  # 默认为 -1
mp = dict()

for i in string:
    if i in mp:
        mp[i] += 1
    else:
        mp[i] = 1

for i in range(len(string)):
    if mp[string[i]] == 1:
        a = i
        break
print(a)

50、最大公因数

求最大公因数

py 复制代码
 def fun1(a, b): # 枚举
    if a == b:  # 如果两个数一样的话,那么就是他们本身
        return a
    num = min(a,b) # 记录最小的
    while a % num != 0 or b % num != 0:
        num -= 1
    return num

print(fun1(12,18))

def fun2(a,b):
    while b != 0: # 除法求余
        a,b = b,a % b
    return a
print(fun2(12,18))
相关推荐
烂蜻蜓32 分钟前
前端已死?什么是前端
开发语言·前端·javascript·vue.js·uni-app
老猿讲编程34 分钟前
安全C语言编码规范概述
c语言·开发语言·安全
web135085886352 小时前
Python大数据可视化:基于python的电影天堂数据可视化_django+hive
python·信息可视化·django
东方芷兰2 小时前
伯克利 CS61A 课堂笔记 11 —— Mutability
笔记·python
Biomamba生信基地4 小时前
两天入门R语言,周末开讲
开发语言·r语言·生信
RAN_PAND4 小时前
STL介绍1:vector、pair、string、queue、map
开发语言·c++·算法
Bio Coder4 小时前
R语言安装生物信息数据库包
开发语言·数据库·r语言
Tiger Z4 小时前
R 语言科研绘图第 27 期 --- 密度图-分组
开发语言·程序人生·r语言·贴图
不会Hello World的小苗4 小时前
Java——列表(List)
java·python·list