Python经典入门100题 (11-20题)

题目地址: https://blog.csdn.net/weixin_41084236/article/details/81564963
转载请标注: https://blog.csdn.net/qq_43582207
代码编写过程中是自己发挥的,只代表其中一种方法,仅供学习参考
运行版本:Python3.7
作者:My apologize

实例011:养兔子

# 实例011:养兔子
# 题目 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
x = eval(input())# 输入繁殖几个月
sum1 = 1# 一月兔过一个月变二月兔
sum2 = 0# 二月兔过一个月变三月兔
sum3 = 0# 三月兔过一个月变成年兔
sum4 = 0# 成年兔每月生一月兔
print('第{}个月过完一共{}兔子'.format(0, sum1 + sum2 + sum3 + sum4))
print('一月兔:{}'.format(sum1))
print('二月兔:{}'.format(sum2))
print('三月兔:{}'.format(sum3))
print('成年兔:{}'.format(sum4))
for i in range(0, x):
    sum1, sum2, sum3, sum4 = sum3+sum4, sum1, sum2, sum3+sum4
    print('第{}个月过完一共{}兔子'.format(i+1, sum1 + sum2 + sum3 + sum4))
    print('一月兔:{}'.format(sum1))
    print('二月兔:{}'.format(sum2))
    print('三月兔:{}'.format(sum3))
    print('成年兔:{}'.format(sum4))

实例012:100到200的素数

# 实例012:100到200的素数
# 题目 判断101-200之间有多少个素数,并输出所有素数。
import math
s = []
for i in range(101, 201):
    for j in range(2, round(math.sqrt(i+1))+1):
        if i % j == 0:
            break
    else:
        s.append(i)
print(s)

实例013:所有水仙花数

# 实例013:所有水仙花数
# 题目 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
for i in range(100, 1000):
    a = i//100
    b = (i-a*100)//10
    c = i-a*100-b*10
    if i == a**3 + b**3 + c**3:
        print(i)

实例014:分解质因数

# 实例014:分解质因数
# 题目 将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5
#实际代码为33-39行
def isprime_number(n):# 判断是否为素数的函数(本题用不到,仅练习)
    for i in range(2, round(pow(n, 0.5))+1):
        if n % i == 0:
            break
        else:
            pass
    else:
        return True# 若为素数返回True
def allprime_number(n):# 记录所有小于被分解数的素数
    prime_numbers = []
    for i in range(2, n):
        for j in range(2, round(pow(i, 0.5))+1):
            if i % j == 0:
                break
            else:
                pass
        else:
            prime_numbers.append(i)
    return prime_numbers
# 1.
# x = eval(input())
# prime_numbers = allprime_number(x)
# while True:
#     for i in prime_numbers:
#         if x % i == 0:
#             print(i,end=' ')
#             x /= i
#             break
# 2.
x = eval(input())# 法一复杂化了,不用把所有质数列出来,直接遍历2到被分解的数,能整除的就是质数
while True:
    for i in range(2, round(x)+1):
        if x % i == 0:
            print(i,end=' ')
            x /= i
            break

实例015:分数归档

# 实例015:分数归档
# 题目 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
grade = eval(input())
if grade >= 90:
    print('A')
elif 60 <= grade <= 89:
    print('B')
else:
    print('C')

实例016:输出日期

# 实例016:输出日期
# 题目 输出指定格式的日期。
import datetime
print(datetime.date.today())
print(datetime.date(2000, 12, 12))
print(datetime.date.today().strftime('%Y~%m~%d'))
day = datetime.date(1234, 3, 25)
day = day.replace(year=4321)
print(day)

实例017:字符串构成

# 实例017:字符串构成
# 题目 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
s = input()
counti = 0# 统计数字
countc = 0# 统计字母
countb = 0# 统计空格
counts = 0# 统计其他
for i in s:
    if i.isspace():
        countb += 1
    elif i.isalpha():
        countc += 1
    elif i.isdigit():
        counti += 1
    else:
        counts += 1
print('数字:{}\n字母:{}\n空格:{}\n其他字符:{}\n'.format(counti, countc, countb, counts))

实例018:复读机相加

# 实例018:复读机相加
# 题目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
a = eval(input())
num = eval(input())# a相加次数
# 法一:利用a * 10^i得到nnnn,然后累加
def func(a, num):
    newa = 0
    sum = 0
    for i in range(num):
        newa += a * 10**i
        sum += newa
    return sum
print(func(a, num))
# 法二:用字符串方法
a = input()# 获取字符串形式的数字a
num = eval(input())
sum = 0
for i in range(num):
    sum += eval(a)
    a += a[0]# 字符串添加,每次添加一个a
print(sum)

实例019:完数

# 实例019:完数
# 题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
def func(x):# 输出x所有因数(除了本身)的函数
    num = []
    for  i in range(1, x):
        if x % i == 0:
            num.append(i)
    return num

print('1000以内所有的完数:')
for x in range(1, 1001):
    sum = 0
    for i in func(x):
        sum += i
    if sum == x:
        print(x)

实例020:高空抛物

# 实例020:高空抛物
# 题目 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
m = 100# 经过的米数
h = 100# 初始高度
for i in range(10):
    h /= 2
    m += 2*h
print('经过{}米,第10次反弹:{}米'.format(m, h))

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页