财务管理学生,Python

4、已知有一批书共1020本,以后每天都买掉一半还多2本,设计程序求出几天能买完。

5、凡是满足x'+y=z的正整数数组(xYz)就称为勾股数组(如345)。请找出任意一个正整数n以内的所有勾股数组

6、编写代码找出满足下面条件的所有三位数:个位数字与十位数字之和除以10所得余数刚好是其百位数字。

7、编写代码实现剪刀、石头、布的猜拳游戏:玩家输入 1、2、3表示剪刀、石头、布,程序随机产生 1、2、3 与玩家比较,并输出输赢结果。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7518095
  • 以下回答由chatgpt基于相关博客总结生成:
    1. 解决方案:
    books = 1020
    count = 0
    while books > 0:
        books = books // 2 - 2
        count += 1
    print(count)  
    
    1. 解决方案:
    import math
    
    def gcd(a, b):
        while b != 0:
            r = a % b
            a = b
            b = r
        return a
    
    def check(a, b):
        if a < b:
            a, b = b, a
        if (a-b) % 2 != 0:
            return False
        c = int(math.sqrt(a*a-b*b))
        return c*c == a*a - b*b and gcd(a, b) == 1
    
    def Pythagorean(n):
        cnt = [0 for i in range(n+1)]
        for a in range(1, n):
            print(a, end="\r")
            for b in range(a+1, n+1):
                if gcd(a, b) != 1:
                    continue
                for k in range(1, n):
                    x = k * (b*b - a*a)
                    y = k * (2*a*b)
                    z = k * (b*b + a*a)
                    if z > n:
                        break
                    if check(y, x):
                        cnt[z] += 1
                        j = 2
                        while j*z <= n:
                            cnt[j*z] += 1
                            j += 1
    
        for i in range(1, n+1):
            if cnt[i] > 0:
                print(i, cnt[i])           
    
    1. 解决方案:
    for i in range(100, 1000):
        if (i % 10 + i // 10 % 10) / 10 == i // 100:
            print(i)
    
    1. 解决方案:
    import random
    
    def judge(player, computer):
        if player == computer:
            return "平局"
        elif player == 1 and computer == 2 or \
             player == 2 and computer == 3 or \
             player == 3 and computer == 1:
            return "你输了"
        else:
            return "你赢了"
    
    while True:
        player = int(input("请输入1剪刀,2石头,3布:"))
        while player not in [1, 2, 3]:
            player = int(input("输入无效,请重新输入:"))
        computer = random.randint(1, 3)
        print(judge(player, computer))  
    

代码实现如下:


'''

4、已知有一批书共1020本,以后每天都买掉一半还多2本,设计程序求出几天能买完。
'''
total = 1020
day = 0
while total>0:
    day+=1
    total = total - (int(total/2)+2)

print(day,'天卖完')


'''

5、凡是满足x^2+y^2=z^2的正整数数组(x,y,z)就称为勾股数组(如345)。请找出任意一个正整数n以内的所有勾股数组

'''
n = int(input())
for i in range(1,n):
    for j in range(i+1,n):
        for k in range(j+1,n):
            if i**2+j**2==k**2:
                print((i,j,k))


'''
6、编写代码找出满足下面条件的所有三位数:个位数字与十位数字之和除以10所得余数刚好是其百位数字。
'''
for i in range(100,1000):
    if (int(str(i)[-1])+int(str(i)[-2]))%10==int(str(i)[0]):
        print(i)

'''
7、编写代码实现剪刀、石头、布的猜拳游戏:玩家输入 1、2、3表示剪刀、石头、布,程序随机产生 1、2、3 与玩家比较,
并输出输赢结果。
'''
import  random

player = int(input('玩家输入 1、2、3表示剪刀、石头、布:'))
system = random.randint(1,3)
print('系统出:',system)
if player==system:
    print('平局')
elif player-system==-2 or player-system == 1:
    print('玩家赢了')
else:
    print('玩家输了')