【Python】助力期末

本资料由 后端码匠 提供 更多精彩详请关注公众号

1 编程输出斐波那契数列的前若干项。即根据用户输入的正整数,

输出数列的各项,如输入正整数5,则输出斐波那契数列的前五项:1,1,2,3,5

方法一

inputNum = int(input("你需要几项?"))
# 第一和第二项
n1 = 0
n2 = 1
count = 2
# 判断输入的值是否合法
if inputNum <= 0:
    print("请输入一个正整数。")
elif inputNum == 1:
    print("斐波那契数列:")
    print(n1)
else:
    print("斐波那契数列:")
    print(n1, ",", n2, end=" , ")
    while count < inputNum:
        nth = n1 + n2
        print(nth, end=" , ")
        # 更新值
        n1 = n2
        n2 = nth
        count += 1

方法二

def fibo(n):
    if n <= 1:
        return n
    else:
        return fibo(n - 1) + fibo(n - 2)


num = int(input("请输入列出的斐波那契数列到第几项: "))
for i in range(num):
    print('%s' % (fibo(i)), end=' ')

2 用函数

实现最大公约数算法和最小公倍数算法,并且编写测试程序测试这两个算法。

2.1

ToN = int(input('ToN='))
ToM = int(input('ToM='))
toA = ToN
toB = ToM
p = 0
temp = 0
r = 0

if ToN < ToM:
    temp = ToN
    ToN = ToM
    ToM = temp

p = ToN * ToM
while ToM != 0:
    r = ToN % ToM
    ToN = ToM
    ToM = r
print("(%s,%s)最大公约数是: %s" % (str(toA), str(toB), str(ToN)))
print('(%s,%s)最小公倍数是: %s' % (str(toA), str(toB), str(p // ToN)))

2.2更相减损法

a = int(input('a='))
b = int(input('b='))
n = a
m = b

while a != b:
    if a > b:
        a = a - b
    else:
        b = b - a
print('(%s, %s)的最大公约数是: %s' % (n, m, a))
print('(%s, %s)的最小公倍数是: %s' % (n, m, m * n // a))
print('{} {}的最小公倍数是: {}'.format(n, m, m * n // a))

3 编写输出10以内素数的循环程序。

for i in range(2, 10):
    for j in range(2, i):
        if i % j == 0:
            print(i, "等于", j, "*", int(i / j))
            break
    else:
        print(i, "是素数")

4 求指定区间内的水仙花数(亦称阿姆斯特朗数),要求使用循环语句和判断语句。

如果一个n位正整数等于其各位数字的n次方之和,则称该数为水仙花数或阿姆斯特朗数。
例如3^3 + 7^3 + 0^3 = 370。1000以内的水仙花数有: 1,153,370,371,407

4.1 方法一

def daffodil(n):
    mysum = 0
    for z in str(n):  # 将n转换为str类型可直接遍历元素
        mysum += int(z) ** len(str(n))
    if mysum == n:
        return True
    else:
        return False


lower = int(input('最小值:'))
upper = int(input('最大值:'))

for j in range(lower, upper + 1):
    if daffodil(j):  # 调用daffodil()判断函数
        print(j, end=' ')

4.2 方法二

def shuiXian(startFr, endFr):
    for fr in range(startFr, endFr):
        gewei = fr % 10
        shiwei = fr // 10 % 10
        baiwei = fr // 100
        if gewei ** 3 + baiwei ** 3 + shiwei ** 3 == fr:
            print(fr)


shuiXian(1, 100);

5 列表练习:写出各条命令的执行结果

print('=====1.列表练习:写出各条命令的执行结果=====')
nameList = ["掌上编程", "敬清秋", "我没有三颗心脏", "xzMhehe"]
a = nameList[2]
print(a)
nameList[0] = "远东以东"
print(nameList)
print(len(nameList))
nameList.append("Kate")
print(nameList)
nameList.insert(2, "Sydney")
print(nameList)
print(nameList[0:2])
print(nameList[2:])
nameList[1] = 'Jeff'
print(nameList)
nameList[0:2] = ['Dave', 'Mark', 'Jeff']
print(nameList)
a = [1, 2, 3] + [4, 5]
print(a)
a = [1, "Dave", 3.14, ["Mark", 7, 9, [100, 101]], 10]
print(a[1])
print(a[3][2])
print(a[3][3][1])

6 元组练习:写出各条命令的执行结果。哪条命令会出错,为什么?

print("=====2.元组练习:写出各条命令的执行结果。哪条命令会出错,为什么?=====")
tup1 = ('red', 'green', 1997, 2000, 1, 2)
tup2 = (1, 2, 3, 4, 5, 6, 7)
print("相同元素:", list(set(tup1).intersection(tup2)))
print("tup1[0]: ", tup1[0])
print("tup2[1:5]: ", tup2[1:5])
print("tup2[3:-1]: ", tup2[3:-1])
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print(tup3)
tup = ('red', 'green', 1997, 2000)
print(tup)
del tup
print("After deleting tup : ")
# print(tup)
print("print(tup) 这里会报错, 因为tup元组已删除")

7 字典练习:写出下列各条命令的执行结果

print("=====3.字典练习:写出下列各条命令的执行结果=====")
info = {"stu01": "马云", "stu02": "马化腾", "stu03": "邱节"}
print(info)
print(info["stu01"])
print(info.get("stu04"))
print("stu03" in info)
info["stu02"] = "xzMhehe"
print(info)
info["stu04"] = "无朽"
print(info)
del info["stu04"]
info.pop("stu03")
print(info)

8 集合练习:写出下列各条命令的执行结果

第一种

print("=====4.集合练习:写出下列各条命令的执行结果=====")
print("===第一种===")
list_1 = [1, 3, 4, 7, 3, 6, 7, 9]
# 对原列表去重并按从小到大排序
list_1 = set(list_1)
list_2 = set([2, 6, 0, 66, 22, 8, 4])
list_3 = set([1, 3, 7])
print(list_1)
print(list_2)
print(list_3)
# list_1与list_2的交集
print("{a} {b}".format(a="list_1与list_2的交集: ", b=list_1.intersection(list_2)))
# list_1与list_2的并集
print("{a} {b}".format(a="list_1与list_2的并集: ", b=list_1.union(list_2)))
# 包含仅存在于集合 x 中而不存在于集合 y 中的元素
print("{a} {b}".format(a="包含仅存在于集合 list_1 中而不存在于集合 list_2 中的元素: ", b=list_1.difference(list_2)))
# 返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素
print("返回两个集合中不重复的元素集合,即会移除 list_1 list_2 两个集合中都存在的元素: ", list_1.symmetric_difference(list_2))

# 判断集合的所有元素是否都包含在指定集合中
print("{a} {b}".format(a="symmetric_difference(判断集合的所有元素是否都包含在指定集合中): ", b=list_3.issubset(list_1)))
print(list_1.issuperset(list_3))
list_4 = set([5, 6, 8])
print(list_3.isdisjoint(list_4))

第二种

print("===第二种===")
# 对原列表去重并按从小到大排序
s = set([3, 5, 9, 10])
print("s=", s)
t = set("Hello")
print("t=", t)
a = t | s
print("a=", a)
b = t & s
print("b=", b)
# 去除重复
c = t - s
print("c=", c)
d = t ^ s
print("d=", d)
t.add('x')
print("t=", t)
s.update([10, 37, 42])
print("s=", s)
t.remove('H')
print("t=", t)
t.pop()
print("t=", t)
t.discard('H')
print("t=", t)
print(len(s))
print('x' in s)
print('x' not in s)
s.issubset(t)
print(s)
print(s <= t)
print("issuperset() 方法用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False:", s.issuperset(t))
print(s >= t)
print("方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次", s.union(t))
print("方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次", s | t)
print(s.intersection(t))
print("s 与 t 的相同元素", s & t)
print(s.difference(t))
print(s - t)
print("s 与 t 的不同元素", s.symmetric_difference(t))
# 不同元素
print("s 与 t 的不同元素", s ^ t)
print(s.copy())

numOne = 9
numTwo = 8
print(numOne if numOne < numTwo else numTwo)

9 九九乘法表

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

10 创建People Student类

class People:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def speak(self):
        print('My name is %s, I am %d years old. ' % (self.name, self.age))


class Student(People):
    def __init__(self, name, age, mark):
        People.__init__(self, name, age)
        self.mark = mark

    def speak(self):
        People.speak(self)
        print('My mark is %d' % self.mark)


s1 = Student('Jack', 19, 89)
s1.speak()

11 百钱买百鸡

i = 0
for x in range(1, 100 // 3 + 1):
    for y in range(1, 100 // 2):
        z = 100 - x - y
        if z / 2 + y * 2 + x * 3 == 100:
            print('小鸡', z, '母鸡', y, '公鸡', x)
            i += 1
print('总共{}种'.format(i))

12 自定义Member并实例化

class Menber:
    name = ''
    __weight = 0

    def __init__(self, name, weight):
        self.name = name
        self.__weight = weight

    def speak(self):
        print('我叫%s,体重为%d' % (self.name, self.__weight))


if __name__ == '__main__':
    p = Menber('黎明', 18)
    p.speak()
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端码匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值