Python随笔36:Python基础编程练习题37~38

:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。

Python基础练习题37:0的组合

给定一个包含若干个整数(可能存在重复整数)的列表,判断其中是否存在三个元素a,b,c,使得a+b+c=0?找出所有满足条件且不重复的这样的三个数的组合。

输入格式:

共一行,列表中元素以空格隔开。

输出格式:

共一行,为不重复组合的个数,不存在这样的组合就输出0。

输入样例:

-1 0 1 2 -1

输出样例:

2

(注:两个组合是-1,-1,2和-1,0,1)

解答:本题看起来很复杂,但其实只要三个循环遍历,加上筛选条件,其它的交给计算机即可解决问题。

l = list(map(int, input().split()))
l = sorted(l)
t = tuple(l)
l2 = []
for i in range(len(t)):
    for j in range(len(t)):
        for k in range(len(t)):
            if i != j and j != k and k != i and t[i] + t[j] + t[k] == 0:  # 列出筛选条件。
                l1 = [t[i], t[j], t[k]]
                l1 = sorted(l1)
                t1 = tuple(l1)
                l2.append(t1)
print(len(set(l2)))
Python基础练习题38:乘积的列表

给定一个包含若干个整数的列表alist,要求返回输出列表blist,blist中的元素为除与alist对应位置上的元素之外其余各元素的乘积。

输入格式:

共一行,列表中的元素以空格隔开。

输出格式:

共一行,为一个列表。

输入样例:

1 2 3

输出样例:

[6, 3, 2]

(注:原列表的1,对应输出6 = 2 * 3,原列表的2,对应输出3=1 * 3,原列表的3,对应输出2 = 1 * 2)

解答:计算加法的基础数为0,计算乘法的基础数为1。这题的关键在于第2个列表中的对应数的乘法计算中,要先排除与它的索引相同的数,然后再累计相乘剩下的数。

l1 = list(map(int, input().split()))
l2 = l1[:]
t1 = tuple(l1)

for i in range(len(t1)):
    r = 1  # 乘法基础数为1。
    for j in range(len(t1)):
        if i != j:
            r *= t1[j]
            l2[i] = r
print(l2)

To be continued.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。 Python基础练习题25:合并两个列表并...
    挂可挂阅读 837评论 0 0
  • 1.python序列概述 2.列表 列表(list)是最重要的Python内置对象之一,是包含若干元素的有序连续内...
    一棵草_0e33阅读 1,394评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,669评论 0 5
  • 基于《Python语言程序设计基础(第2版)》 第一部分 初识Python语言 第1章 程序设计基本方法 1.1 ...
    柄志阅读 27,748评论 4 44
  • 3.4 说说相等和内部表示 在Lisp中主要有5种相等断言,因为不是所有的对象被创建的时候都是相等意义上的相等。数...
    geoeee阅读 1,964评论 0 6

友情链接更多精彩内容