Python:每日一题001

题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

**程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

个人解题思路

利用排列组合知识算出总共有4X3X2= 24个数,构造每个数加入列表中,打印输出。

  import random
  li = ["1","2","3","4"]
  all_sum_num = 4*4*4
  new_sum_list = []
  for i in range(all_sum_num):
      choose_li =  random.sample(li,3)
      new_num_str = "".join(choose_li)
      new_sum_list.append(new_num_str)
  num_set = set(new_sum_list)
  num_str_list =  list(num_set)
  print(num_str_list)
  print(len(num_str_list))

  

分析:这种写法有个漏洞,就是随机取出的3个数并不能完全取完所有可能的数,造成结果不唯一,每次运行程序可能结果都不一致。

参考解答方法:

  li = []
  for i in range(1,5):
      for j in range(1,5):
          for k in range(1,5):
              if i != k and i != j and j != k:
                  num = i*100 + j*10 + k
                  li.append(num)
  ?
  print(li)
  print(len(li))

  

分析:用3个for循环,加上if条件判断,将产生的数加入列表即可

上述代码可以继续精简

  li1 = [1,2,3,4]
  li2  = [a*100 + b*10 +c for a in li1 for b in li1 for c in li1 if a != b and a != c and b != c]
  print(li2)
  print(len(li2))

  

分析:采用列表生成式,分别对百位、十位、个位的数字进行生成并合成列表的元素。

(本文编号001,首发于2018年9月11日)

原文地址:https://www.cnblogs.com/Nicholas0707/p/9630924.html

时间: 2024-11-05 11:38:45

Python:每日一题001的相关文章

python每日一题:锁知识点

import time import threading def show1(): for i in range(1, 52, 2): lock_show2.acquire() print(i, end='') print(i+1, end='') time.sleep(0.2) lock_show1.release() def show2(): for i in range(26): lock_show1.acquire() print(chr(i + ord('A'))) time.slee

​老男孩教育每日一题-第79天-命令风暴:打印出001 002 003 这样的格式的数字

题目: 打印出001 002 003 这样的格式的数字 参考答案 方法1:{}生成序列 [[email protected] ~]# echo 00{1..3} 001  002  003 方法2:seq法 [[email protected] ~]# seq -w 100 001 002 003 004 005 006 007 ---- [[email protected] ~]# seq -w 100 |sed -n '1,3p' 001 002 003 此法效率不高.尽量让第一次的结果越接

老男孩教育每日一题-2017-04-17:使用Shell或Python写一个脚本,CPU使用率超过80%或硬盘超过85%邮件报警

老男孩教育每日一题-2017-04-17: 使用Shell或Python写一个脚本,CPU使用率超过80%或硬盘超过85%邮件报警. 今天是老男孩教育每日一题陪伴大家的第29天.

【Java每日一题】20161228

package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1228 { public static void main(String[] arg){ Student stu01 = new Student("001"); Student stu02 = new Student("001 "); // stu02中001后面有个空格 List<Stud

每日一题20180326

一.问题 1.1 统计脚本执行时间 如何统计脚本执行的时间? 1.2 让rm命令失效 要求用命令rm删除文件时提示如下禁止使用rm的提示,并使该效果永久生效. [[email protected] oldboy]# rm -f passwd Do not use rm command. 1.3 删除文件 删除/tmp/oldboy/下除passwd以外的其他文件. 1.4 打印 请打印/etc/passwd文件中的第2-5行 1.5 调换列 调换passwd文件里root位置和/bin/bash

老男孩教育每日一题-2017年5月11-基础知识点: linux系统中监听端口概念是什么?

1.题目 老男孩教育每日一题-2017年5月11-基础知识点:linux系统中监听端口概念是什么? 2.参考答案 监听端口的概念涉及到网络概念与TCP状态集转化概念,可能比较复杂不便理解,可以按照下图简单进行理解? 将整个服务器操作系统比喻作为一个别墅 服务器上的每一个网卡比作是别墅中每间房间 服务器网卡上配置的IP地址比喻作为房间中每个人 而房间里面人的耳朵就好比是监听的端口 当默认采用监听0.0.0.0地址时,表示房间中的每个人都竖起耳朵等待别墅外面的人呼唤当别墅外面的用户向房间1的人呼喊时

老男孩教育每日一题-第126天-通过shell脚本打印乘法口诀表

问题背景: 生成9*9乘法表 [[email protected] ~]# seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}' 1x1=1 1x2=2   2x2=4 1x3=3   2x3=6   3x3=9 1x4=4   2x4=8   3x4=12  4x4=16 1x5=5

老男孩教育每日一题-第83天-binlog是什么?记录的什么?有几种工作模式及企业应用场景

参考答案 含义 binlog:是用于记录所有更新了数据的操作语句,语句以事件的形式保存,它描述数据的更改过程作用:用于实时备份数据,数据库的主从复制log_bin 打开记录binlog功能 binlog的查看 mysqlbinlog /home/mysql/binlog/binlog.000003 binlog的删除:可分为自动与手动删除 自动删除 能过binlog参数expire_logs_days来实现 show binary logs; show variables like "expir

&#8203;老男孩教育每日一题-第85天-下面这个脚本直接执行没有问题,在定时任务中有问题,什么原因?

脚本内容: [[email protected] scripts]# cat /server/scripts/ip.sh  #!/bin/bash IP=$(ifconfig eth0 |awk -F "[ :]+" 'NR==2{print $4}') echo "ip:$IP" >> /tmp/ip.txt 定时任务: [[email protected] scripts]# crontab -l * * * * * /bin/bash /serve