python算法:新郎新娘

一,for循环:

1,功能:重复执行同一段代码
语法:

for index in range(n): 
    # 循环体代码

index : 用来依次接收可迭代对象中的元素的变量名
range()函数:负责返回整数序列

流程图:

2,应用

range可以同时指定start 和stop,用for遍历并打印

# 指定 start和stop
# print的参数 end=" " 用来使打印不换行
for num in range(3,9):
    print(num, end=" ")

运行结果:

3 4 5 6 7 8 

说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/29/python-suan-fa-xin-lang-xin-niang/
代码: https://github.com/liuhongdi/https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,新郎新娘的题目与解析:

1,题目:

有三对情侣结婚,假设:
三个新郎为A、B、C,
三个新娘为X、Y、Z。
有参加婚礼的人搞不清谁和谁结婚,所以去询问了这六位新人中的三位,得到的回答为:

新郎A说他要和新娘X结婚;
新娘X说她的未婚夫是新郎C;
新郎C说他要和新娘Z结婚。

听到这样的回答后,提问者知道他们都是在开玩笑,说的都是假话,但他仍搞不清谁和谁结婚。现在请编程求出到底哪位新郎和哪位新娘结婚。

2,解析:

因为提问者得到的回答都是假话,所以:
新郎A的新娘不是X,
X的新郎不是C,
C的新娘不是Z。 一个新郎只能和一个新娘结婚,他们之间是一对一的关系

设三个变量x、y和z分别表示与新娘X、Y、Z结婚的新郎,
它们可能取值的集合是{‘A’,’B’,’C’}。
定义一个groom列表来存放三个新郎,如下:
groom = [‘A’,’B’,’C’]

根据问题分析中获得的结论,可以得出判断依据如下:

x!=’A’——新郎A的新娘不是X。
x!=’C’——与新娘X结婚的新郎不是C。
z!=’C’——C的新娘不是Z。

x!=y——与新娘X结婚的新郎不会与新娘Y结婚。
x!=z——与新娘X结婚的新郎不会与新娘Z结婚。
y!=z——与新娘Y结婚的新郎不会与新娘Z结婚。

将上面的判断依据组合起来,
找到变量x、y和z所满足的条件找到上面的条件以后,
在程序中使用三重循环来穷举x、y和z的所有取值

三,编写代码:

# 定义列表,保存三个新郎
groom = ['A', 'B', 'C']
# 穷举所有可能情况
for x in groom:     # 新娘x的匹配值
    for y in groom:     # 新娘y的匹配值
        for z in groom:     # 新娘z的匹配值
            # 题目中的要求,同时x,y,z的取值不能重复
            if (x != 'A' and x != 'C' and z != 'C' and
                    x !=y and x != z and y != z):
                print("新娘X与新郎" + x + "结婚")
                print("新娘Y与新郎" + y + "结婚")
                print("新娘Z与新郎" + z + "结婚")

运行结果:

新娘X与新郎B结婚
新娘Y与新郎C结婚
新娘Z与新郎A结婚
QR:python算法:新郎新娘

发表回复