python经典例题(二)

【程序11】
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
分析:依次判断每一个三位数,其个位数立方加上十位数立方加上百位数立方等于其本身
获取个位数:i % 10
获取十位数:i // 10 % 10
获取百位数:i // 100 % 10

print('水仙花数有:', end=' ')
for i in range(100, 1000):
    if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3 == i:
        print(i, end=' ')

【程序12】
题目:将一个正整数分解质因数。例如:输入90, 打印出90 = 2 * 3 * 3 * 5

num = int(input('请输入一个正整数:'))
print(f'{num} =', end=' ')

for i in range(2, num+1):
    while num != i:
        if num % i == 0:
            print(str(i), end=' ')
            print('*', end=' ')
            num = num // i
        else:
            break
            
print('%d' % num)

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

score = int(input('输入成绩:'))
if score < 0 or score > 100:
    print('输入的成绩无效!')
elif score >= 90:
    print('该学生的成绩为: A')
elif score >= 60:
    print('该学生的成绩为: B')
else:
    print('该学生的成绩为: C')

【程序14】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

s = input('输入一行字符:')
count_c = 0
count_n = 0
count_s = 0
count_o = 0

for i in s:
    if i.isalpha():
        count_c += 1
    elif i.isdigit():
        count_n += 1
    elif i.isspace():
        count_s += 1
    else:
        count_o += 1

print(f'这串字符中有英文字母 {count_c} 个,数字 {count_n} 个,空格 {count_s} 个,其它字符 {count_o} 个。')

【程序15】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

n = input('输入一个数字:')  # 就是题目中的a
num = int(input('输入一个正整数:'))  # 控制几个数相加
lst = []
print('s = ', end='')

for i in range(1, num+1):
    if i != num:
        print(n * i, end=' ')
        print('+', end=' ')
        lst.append(int(n * i))
    else:
        print(n * i, end=' ')
        lst.append(int(n * i))

print('=', end=' ')
print(sum(lst))

【程序16】
题目:一个数如果恰好等于它的真因子之和,这个数就称为“完数”。例如6=1+2+3.
编程找出1000以内的所有完数。

print('1000以内的完数有:', end=' ')
for i in range(1, 1001):
    lst = []
    for j in range(1, i+1):
        if i == j:
            if i == sum(lst):
                print('%d' % sum(lst), end=' ')
        elif i % j == 0:
            lst.append(j)

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

s = 100
lst = [100]
for i in range(1, 11):
    s -= s / 2  # 每一次落下后反弹的高度
    lst.append(s)
lst.pop()
print('第十次落地时,共经过 %f 米' % sum(lst))
print('第十次反弹的高度为 %f 米' % s)

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

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

【程序19】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

lst1 = ['c', 'a', 'b']
lst2 = ['x', 'y', 'z']
dict = {}
for i in lst1:
    for j in lst2:
        if i == 'c' and j != 'x' and j != 'z':
            dict['c'] = j
            lst2.remove(j)
            break
        elif i == 'a' and j != 'x':
            dict['a'] = j
            lst2.remove(j)
            break
        else:
            dict['b'] = j
print('三队赛手的名单:{}'.format(dict))

【程序20】
题目:打印出如下图案(菱形)
在这里插入图片描述

for i in range(1, 8, 2):
    s = '*' * i
    print('{:^7}'.format(s))
for i in range(5, 0, -2):
    s = '*' * i
    print('{:^7}'.format(s))

你可能感兴趣的:(Python,python,算法)