Python 作业题

作业1:学生管理系统
    |-- 进行持久化
    |-- 将密码加密(hashlib)

作业2:判断一个整数是奇数还是偶数,至少有两种方式实现(位运算已经讲解的话)

方法一:直接通过取余
a = int(input("输入一个数"))
if a % 2 ==0:
    print("偶数")
else:print('奇数')



方法二:通过与运算,二进制最后一位是1的是奇数,1与1与是1反之0是偶数

if a & 1 ==0:
    print("偶数")
else:print("奇数")

作业3:猜数字游戏(使用random模块完成)
    电脑随机一个范围内的数,用户输入数据判断,
    如果数大了,提供”数大了“
    成功之后,加上用户是否继续功能
 

import random
def A (n):
    i = random.randint(0,n)
    while True:
        num = int(input('请输入一个数'))
        if num == i:
            print("猜对了")
            choice = input("输入n继续游戏,其他键退出游戏")
            if choice == "n":
                i = random.randint(0,n)
            else:
                break
        elif num > i:
            print("猜大了")
        else:
            print("猜小了")
    print("正确数字是",i)
A(int(input("请输入一个范围")))

作业4:猜拳游戏:石头、剪刀、布的游戏

import random
def A ():
    b = random.randint(0,2)
    a = int(input("请输入0石头,1剪刀,2布"))
    if (a == 0 and b == 1) or (a == 1 and b == 2) or (a == 2 and b == 0):
        print("你赢了!\n")
    elif (a == 0 and b == 2) or (a == 1 and b ==0) or (a == 2 and b == 1):
        print("你输了")
    else:print("平局")
    print(b)


A()

作业5:鸡兔同笼,从上面看有35个头,从下面看有94只脚,请问鸡有几只,兔有几只?

numt = 35
numj = 94
for x in range(1,numt):
    y = numt - x
    if 2*x + 4*y == numj:
        print("鸡有",x)
        print("兔子有",y)

作业6:编程求一个四位自然数ABCD,它乘以A后变成DCBA

for i in range(1000, 10000):
    D = (i % 1000) % 100 % 10
    C = (i % 1000) % 100 // 10
    B = (i % 1000) // 100
    A = i // 1000
    # DCBA的计算方式
    change = D * 1000 + C * 100 + B * 10 + A
    if (i * A) == change:
        print(i, end="\t")

作业7:打印如下图案:

(1) 

    *
    **
    ***
    ****
    *****
    ******

(2)
        *
       ***
      *****
     *******
    *********

(3)
    *********
     *******
      *****
       ***
        *

(4)
        *
       ***
      *****
     *******
    *********
     *******
      *****
       ***
        *

(5) 

        *
       * *
      *   *
     *     *
    *       *
     *     *
      *   *
       * *
        *

(6) 

        *
       ***
      * * *
     *  * *
    *********
     *  *  *
      * * *
       ***
        *

(1)

i = 0
num = int(input("请输入层数"))
while i < num :
    a = 0
    while a <= i:
        print("*",end="")
        a = a + 1
    print()
    i = i + 1

(2)

num = int(input("请输入层数"))
i = 1
while i <= num:
    num_space = num - i
    j = 1
    while j <= num_space:
        print("", end=" ")
        j = j + 1
    a = 2 * i - 1
    print("*" * a)
    i = i + 1

使用面向对象定义一个栈(Stack)

class Stack:
    def __init__(self):
        self.stack = []

    def push(self, value):
        self.stack.append(value)
        return True

    def pop(self):  # 出栈方法
        # 判断栈是否为空
        if self.stack:
            # 获取出栈元素 并返回
            item = self.stack.pop()
            return item
        else:
            return False

    def top(self):  # 查看栈顶元素方法
        if self.stack:
            return self.stack[-1]
        else:
            return False

    def length(self):  # 查看栈长度方法
        return len(self.stack)

    def view(self):  # 查看栈元素方法
        return ','.join(self.stack)

s = Stack()
s.push('1')
s.push('2')
s.push('3')  # 入栈三个元素1,2,3
item = s.pop()  # 出栈一个元素
print(s.top())  # 查看栈顶元素
print(s.length())  # 查看栈长度
print(s.view())  # 查看栈元素

使用面向对象顶一个队列(Queue)

class Queue(object):
    def __init__(self):
        self.queue = []

    def is_empty(self):
        return self.queue == []

    def enqueue(self, item):
        self.queue.append(item)
        print("入队元素为%s,入队成功" % (item))

    def dequeue(self, item):
        if self.is_empty():
            # raise抛出异常
            raise Exception("队列为空,不能出队")
        else:
            item = self.queue.pop()
            print("出队元素为%s,出队成功" % (item))

    def first(self):
        if self.is_empty():
            # raise抛出异常
            raise Exception("队列为空,无队尾元素")
        else:
            return self.queue[-1]

    def __len__(self):
        # 魔术方法,当执行len(Q)时会自动执行该魔术方法
        return len(self.queue)


q = Queue()
for item in range(10):
    q.enqueue(item)

for item in range(2):
    q.dequeue(item)
print("当前队列长度为: ", len(q))
print("当前队列是否为空?", q.is_empty())
print(q.first())


打印输出标准水仙花数,输出这些水仙花数

for i in range(1,10):
    for o in range(10):
        for p in range(10):
            if i ** 3  + o ** 3 + p ** 3 == i * 100 + o * 10 + p:
                print(i * 100 + o * 10 + p )


验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

if i > 9 and i < 100:              #(两位数)
    a = i // 10
    b = i % 10
    i = a * 10 + b * 1
    if (i-(a+b)) % 9 == 0:
        print("验证成功")
    else:print("验证失败")


if i > 99 and i < 1000:            #(三位数)
    a = i // 100
    b = (i % 100) // 10
    c = (i % 100) % 10
    if (i-(a+b+c)) % 9 == 0:
        print("验证成功")
    else:print("验证失败")


有一种最简真分数,它们的分子与分母的乘积都是140,把
        所有这样的真分数从小到大打印出来

for i in range(1,11):             #分子不大于10
   for j in range(i+1,141):      #分母
        if i * j == 140:
            print(f"{i}/{j}")

某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去
        除余数都是1,求这 个自然数.

num = 0
for i in range(1,1000):
    shang = 80 // i
    yushu = i % 80
    a = i % 2
    b = i % 3
    c = i % 4
    d = i % 5
    e = i % 6
    if shang % 7 == 0 and a == 1 and b == 1 and c == 1 and d == 1 and e ==1:
        print(i)

有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
    [10, 8, 5, 3, 27, 99]
 

num = 0
a = [10, 8, 5, 3, 27, 99]
for i in a :
    b = i % 2
    if b == 0 :
        num = i //2 + num
    else:
        num = i //2 + 1 + num
print(f"最少需要{num}次")




编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和

for i in range(100,1000):
    a = i // 100
    b = (i % 100) // 10
    c = (i % 100) % 10
    if i / 11 == (a + b + c):
        print(i)

给定一个正整数N,找出1到N(含)之间所有质数的总和


求 a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

def odd_(num):
    for i in range(len(num) - 1):
        # k = 0
        # for j in(i+1, len(num)):

        if num[i] % 2 == 0 and num[i + 1] % 2 == 1:  # 前偶数,后奇数就交换
            num[i], num[i + 1] = num[i + 1], num[i]

        while i > 0:
            if num[i] % 2 == 1 and num[i - 1] % 2 == 0:
                num[i], num[i - 1] = num[i - 1], num[i]
            i -= 1
    return num


if __name__ == "__main__":
    target = 2  # int(input())
    # arr = list(map(int, input().split()))

    arr = [1, 2, 3, 4, 3]
    # repeat_num(target, arr)
    print(odd_(arr))


将10进制数据转换为二进制,并且统计其中的0和1的数量

给定一个数组,已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素。
    如[1,3,1,2,2,8,8],是3

求第n项的斐波那契数列的值(n>=1)

def Fibonacci(n):
    if n == 1:
        return 1
    elif n == 0:
        return 0
    elif n >= 2 :
        return Fibonacci(n-1)+Fibonacci(n-2)


print(Fibonacci(10))

你需要上楼梯,一次只能上一个台阶或者两个台阶,当到达第n个台阶时,共有多少种走法


小明考试非常好,妈妈为了奖励小明,给一对刚刚出生的兔子,
    兔子可以经过四个月,可以长大称为成年的兔子,可以生育新的兔子,
    假设成年兔子,每个月生一对小兔子,问,第n个月共有多少对兔子(加上兔子不死)

给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
    可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数


版权声明:本文为m0_59520765原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。