Python 3 基础练习 源码

时间:2023-02-13 19:59:45

  1                 打印 99乘法表:

for i in range(1,10):
for j in range(1,i+1):
print("%s*%s=%s"%(i,j,i*j)+' ',end='')
print()


for i in range(1,10):
for j in range (1,i+1):
print('{}x{}={}\t'.format(i, j, i*j), end='')
print()


for i in range(1,10):
for j in range (1,i+1):
print(i, 'x',j,'=', i*j,'', end='')
print()

print('\n'.join(map(lambda x:''.join(map(lambda y: "%s x %s = %s" % (x, y, x * y), range(1,10))), range(1,10))))

                                    判断素数:

n = int(input("请输入一个数: "))
if n <= 1:
    print("不是素数")
    quit()  # 退出程序

for x in range(2, n):
    if n % x == 0:
        print("不是素数")
        break
else:
    print("是素数")



    #  用while 语句生成如下字符串:
#   打印结果:
#   1) "ABCD......XYZ"
#   2) "AaBbCcDc...XxYyZz"


#   知识点 :
#     chr, ord(), while 语句, 变量等


s1 = ''  # 用于保存"ABCD....XYZ"
s2 = ''  # 用于保存"AaBbCcDc...XxYyZz"


b = ord('A')  # 65  开始
e = ord('Z')  # 90  结束
while b <= e:
    s1 += chr(b)
    s2 += chr(b)
    s2 += chr(b + 32)
    b += 1


print(s1)
print(s2)


     算出 100 ~ 1000 以内的水仙花数(Narcissistic number)

#    水仙花数是指百位的3次方 加 十位的3次方 加 个位的三次方等于原数
#    例:
#      153 = 1**3 + 5**3 + 3**3


#    答案:  153, 370 ....




# 方法1 
# for x in range(100, 1000):
#     bai = x // 100
#     shi = (x % 100) // 10
#     ge = x % 10
#     m = bai ** 3 + shi ** 3 + ge ** 3
#     if x == m:
#         print(x)


# 方法2
# for x in range(100, 1000):
#     s = str(x)
#     bai = int(s[0])
#     shi = int(s[1])
#     ge = int(s[2])
#     m = bai ** 3 + shi ** 3 + ge ** 3
#     if x == m:
#         print(x)


# 方法3
for bai in range(1, 10):
    for shi in range(0, 10):
        for ge in range(0, 10):
            # print(bai, shi, ge)
            m = bai ** 3 + shi ** 3 + ge ** 3
            x = bai * 100 + shi * 10 + ge
            if x == m:
                print(x)


    # 计算完全数:
#    完全数是指除自身以前的所有因数之和相加,等于自身的数


#    1 + 2 + 3 = 6
#    1,2,3都为6的因数
#    1 * 6 = 6
#    2 * 3 = 6
#    求4~5个完全数


n = 2
while True:
    # 计算完全数
    # 求因数和
    s = 0
    for x in range(1, n):
        if n % x == 0:  # 此时是因数
            s += x  # 所有因数的和
    if s == n:  # 完全数
        print(n)
    n += 1


     #   1. 用字符串 * 号打印圣诞树
#     输入一个数,代表圣诞树的树干高度
#     输入:2
#  *
# ***
#  *
#  *
# 输入:3
#   *
#  ***
# *****
#   *
#   *
#   *


# 分析
#   *   # 1
#  ***  # 2
# ***** # 3
# i 表求当前行数, 星号个数 2*i-1
#               空格个数 n - i
n = int(input("请输入高度"))
for i in range(1, n + 1):
    print(' ' * (n - i) + "*" * (2 * i - 1))

for i in range(n):
    print(' ' * (n - 1) + "*")




     #  有一些数存于列表中.如:
#  L = [1, 3, 2, 1, 6, 4, 2, ....., 99, 82]
#  要求将列表中只出现一次的元素存入另一个列表L2中


L = [1, 3, 2, 1, 6, 4, 2, 99, 82]
# L2 = [3, 6, 4, 99, 82]
L2 = []
for x in L:
    if L.count(x) == 1:
        L2.append(x)

print(L2)


    # 将10000以内的所有素数存于列表中,求这些素数的和

L = []
for x in range(2, 10001):
    for i in range(2, x):
        if x % i == 0:
            break
    else:
        L.append(x)


print(sum(L))


  
     #   1. 写一个程序,先输入一些单词和解释,
#      将单词作为键,将解释作为值,将这此数据输入字典中.
#       以输入单词为空结束输入.
#     然后循环提示请输入要查找的词:
#     如果不存在于字典中提示没找到,如果存在,打印出解释


d = {}
while True:
    w = input("请输入单词:")
    if not w:
        break
    c = input("请输入解释:")
    d[w] = c  # 放入字典




while True:
    w = input("请输入查找的单词: ")
    if w == 'q':  # 定义q退出
        break
    if w in d:
        print(d[w])
    else:
        print("没找到您输入的单词")


      输入任意5个学生的 姓名,年龄,成绩,每个学生的信息
#     存入字典,然后把学生信息的字典放入列表中.
#   每个学生的信息需要手动输入
#   内部存储格式如下:
#   [{"name":"tarena", "age": 20, "score": 99},
#      {"name":"xiaozhang", "age": 23, "score": 100},
#      .... ]


# 1) 打印所有学生信息如下:
# +-------------+-------------+-----------+
# |   姓 名      |   年  龄    |   成绩     |
# +-------------+-------------+-----------+
# |  tarena     |      20     |    99     |
# | xiaozhang   |      23     |   100     |
# |  name2      |      28     |    70     |
# |   ....      |     ...     |   ...     |
# +-------------+-------------+-----------+
# 2) 输入学生的分数线,把高于这个分数线的学生信息打印出来
# 如输入:90 打印如下
# +-------------+-------------+-----------+
# |   姓 名      |   年  龄    |   成绩     |
# +-------------+-------------+-----------+
# |  tarena     |      20     |    99     |
# | xiaozhang   |      23     |   100     |
# +-------------+-------------+-----------+


L = []
# d = {}
for i in range(5):
    no = str(i+1)
    n = input("请输入第" + no + "个学生的姓名: ")
    a = int(input("请输入第" + no + "个学生的年龄: "))
    s = int(input("请输入第" + no + "个学生的成绩: "))
    d = {"name": n, "age": a, "score": s}
    L.append(d)
    # d['name'] = n
    # d['age'] = a
    # d['score'] = s
    # L.append(d.copy())




# print(L)


line = "+-------------+-------------+-----------+"
title = '|   姓 名     |   年  龄    |   成绩    |'


print(line)
print(title)
print(line)
# 打印学生的信息
for d in L:
    s = ("|" + d['name'].center(13)
         + "|" + str(d['age']).center(13)
         + "|" + str(d['score']).center(11)
         + "|"
         )
    print(s)


print(line)


max_score = int(input("请输入分数线: "))


line = "+-------------+-------------+-----------+"
title = '|   姓 名     |   年  龄    |   成绩    |'


print(line)
print(title)
print(line)
# 打印学生的信息
for d in L:
    s = ("|" + d['name'].center(13)
         + "|" + str(d['age']).center(13)
         + "|" + str(d['score']).center(11)
         + "|"
         )
    if d['score'] > max_score:
        print(s)


print(line)