前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|列表和循环遍历思考题

Python|列表和循环遍历思考题

作者头像
算法与编程之美
发布2020-06-17 15:40:00
1.1K0
发布2020-06-17 15:40:00
举报

问题描述

(1)给定一个数组,你需要删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度和新的数组。

输入样例:[1,1,1,2,3,4,4,4]

输出样式:4 [1,2,3,4]

(2)马虎的算式

小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

有一次,老师出的题目是:36 x 495 = ?

他却给抄成了:396 x 45 = ?

但结果却很戏剧性,他的答案竟然是对的!!

假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)

能满足形如:ab * cde = adb * ce 这样的算式一共有多少种呢?

请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。

因为 36 * 495 = 396 * 45 = 17820

类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54

解决方案

(1)首先这是一个数组并且需要返回列表所以要将字符串转化为数,其次需要删除重复的数,最后要输出长度。

(2)首先abcde是1~9不同的数字,且满足ab*cde=adb*ce,一共有多少种情况。

(3)用list()转化为列表,set()转化为不重复的集合,eval()把字符转化为数,len()计算该列表的长度。下表是最简单的做法。

代码语言:javascript
复制

L=list(set(eval(input())))        

print(len(L),L)

表 1

(4)首先要用for循环来循环abcde的值,然后再用if语句来判定条件,再将符合条件的abcde加起来就是最后符合条件的数的个数了。

代码语言:javascript
复制

 x=0         

for a in range(1,10):     

  for b in range(1,10):         

    for c in range(1,10):             

      for d in range(1,10):                 

        for e in range(1,10):                     

          if a!=b and a!=c and a!=d and a!=e and b!=c and b!=d and b!=e and c!=d and c!=e and d!=e and(a*10+b)*(c*100+d*10+e)==(a*100+d*10+b)*(c*10+e):                         

            x+=1  #x=x+1 

print(x)

表 2

结语

需要熟悉一些列表的基本性质如:插入,删去,索引。要通过这些代码来完成。set()转化为不重复的集合,eval()把字符转化为数,len()计算该列表的长度。是第一题的解题关键。要熟悉for循环和if语句,需要注意这些语句的最后都需要“:”来结束。在使用for语句的时候一定要注意范围,if语句的时候要注意条件是否输入正确是否有遗漏。

END

实习编辑 | 王文星

责 编 | 江汪霖

where2go 团队

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档