圣诞送礼问题

 这个问题要求一群人互相送礼还不能漏。

import random
sc = "ABCDEF"
result = {}
song = list(sc)
shou = list(sc)
count = 0
while song:
    i = random.randint(1, len(sc) - 1)
    j = random.randint(1, len(sc) - 1)
    if sc[i] in song and sc[j] in shou and i != j:
        a = sc[i]
        b = sc[j]
        result.update({a:b})
        print(f"同学{sc[i]}送了同学{sc[j]}一份礼物")
        song.remove(sc[i])
        shou.remove(sc[j])
        count = count + 1
        if count == len(sc)-2 :
            print(f"同学{song[0]}送了同学{shou[1]}一份礼物")
            print(f"同学{song[1]}送了同学{shou[0]}一份礼物")
            result.update({song[0]: shou[1]})
            result.update({song[1]: shou[0]})
            break
print(result)

我的思路是前面的一群人互相随机送,最后两位空置位互相送,不然会出现自己送自己的情况。

送礼为一个列表song = list(sc)
收礼也是一个列表shou = list(sc)

然后循环

while song:
    i = random.randint(1, len(sc) - 1)
    j = random.randint(1, len(sc) - 1)
    if sc[i] in song and sc[j] in shou and i != j:
        a = sc[i]
        b = sc[j]
        result.update({a:b})
        print(f"同学{sc[i]}送了同学{sc[j]}一份礼物")
        song.remove(sc[i])
        shou.remove(sc[j])

从送和收分别随机抽一个人,只要他们不是同一个人,就抽出来,分别赋给a,b,加进result字典一 一 对 应

再从送礼和收礼的两个列表把人删除

 count = count + 1
        if count == len(sc)-2 :
            print(f"同学{song[0]}送了同学{shou[1]}一份礼物")
            print(f"同学{song[1]}送了同学{shou[0]}一份礼物")
            result.update({song[0]: shou[1]})
            result.update({song[1]: shou[0]})
            break
print(result)

count是个计数单位,为了留出最后俩空

再让送礼和收礼的两个位置上的人互相交换

结束

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为您介绍如何用Python创建一个不断变大的圣诞老人。根据提供的引用内容,我将为您提供两种方法来实现这个效果。 方法一:使用Pygame库 ```python import pygame # 初始化Pygame pygame.init() # 创建窗口 screen = pygame.display.set_mode((800, 600)) # 加载圣诞老人图片 santa_image = pygame.image.load("santa.png") # 设置初始大小和位置 santa_rect = santa_image.get_rect() santa_rect.center = (400, 300) scale_factor = 1 # 游戏主循环 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 每帧增加圣诞老人的大小 scale_factor += 0.01 scaled_santa_image = pygame.transform.scale(santa_image, (int(santa_rect.width * scale_factor), int(santa_rect.height * scale_factor))) # 更新圣诞老人的位置 santa_rect = scaled_santa_image.get_rect(center=santa_rect.center) # 清屏 screen.fill((255, 255, 255)) # 绘制圣诞老人 screen.blit(scaled_santa_image, santa_rect) # 更新屏幕 pygame.display.flip() # 退出游戏 pygame.quit() ``` 方法二:使用OpenCV库 ```python import cv2 # 加载圣诞老人图片 santa_image = cv2.imread("santa.png") # 设置初始大小和位置 scale_factor = 1 # 创建窗口 cv2.namedWindow("Santa", cv2.WINDOW_NORMAL) # 循环显示圣诞老人 while True: # 每帧增加圣诞老人的大小 scale_factor += 0.01 scaled_santa_image = cv2.resize(santa_image, (int(santa_image.shape[1] * scale_factor), int(santa_image.shape[0] * scale_factor))) # 显示圣诞老人 cv2.imshow("Santa", scaled_santa_image) # 按下ESC键退出 if cv2.waitKey(1) == 27: break # 释放窗口 cv2.destroyAllWindows() ``` 这两种方法都可以实现圣诞老人不断变大的效果。您可以根据自己的需求选择其中一种方法进行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值