python练习实例1--------给定数字组成三位数
题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
来看第一种解法
num = [1, 2, 3, 4]
"""
根据题中'互不相同'要求,创建一个集合(去重),存放三位数
注意{}仅用于创建空字典!set()函数用来创建集合
"""
s = set()
# 遍历整个列表三次,组成三位数
for i in num:
for j in num:
# 去掉与i重复的数字
if j !=i:
for k in num:
# 去掉与i,j重复的数字
if k != j and k != i:
n = 100*i + 10*j + k
# 注意集合添加元素的方法为add和update
s.add(n)
print("无重复的三位数个数:", len(s))
print("分别是:", s)
这种解法时间复杂度为O(n2), 其中的列表可以换成range生成器
s = set()
# 遍历整个列表三次,组成三位数
for i in range(1, 5):
for j in range(1, 5):
# 去掉与i重复的数字
if j !=i:
for k in range(1, 5):
# 去掉与i,j重复的数字
if k != j and k != i:
n = 100*i + 10*j + k
# 注意集合添加元素的方法为add和update
s.add(n)
print("无重复的三位数个数:", len(s))
print("分别是:", s)
以上两种解法都可以改成列表推导式的形式,如下,这种形式看上去简洁,但如果出错了排查起来比较困难,一般不推荐使用
lst = [100*i + 10*j + k for i in num for j in num for k in num if (i != j and j != k and k != i)]
第三种方法比较野路子,先确定最终数的范围,然后一个一个判断,当然这种效率是极低的
s = set()
# 缩小范围,三位数肯定在123和433之间
for i in range(123, 433):
# 个位数字
a = i%10
# 十位数字
b = (i%100)//10
# 各位数字
c = (i%1000)//100
if a != b and b != c and a != c and 0 < a < 5 and 0 < b < 5 and 0 < c < 5:
s.add(i)
print("无重复的三位数个数:", len(s))
print("分别是:", s)
第四种方法是运用python的内置函数permutations,其语法格式为:
permutations(iterable[, r]),返回一个长度为r的元组
代码如下:
from itertools import permutations
# permutations返回3位长度的元组,permutations意为交换
s = set()
for i in permutations([1, 2, 3, 4], 3):
k = ''
for j in range(0, len(i)):
k = k + str(i[j])
s.add(int(k))
print("无重复的三位数个数:", len(s))
print("分别是:", s)
总结
第一、二种方法比较接近,都是for循环嵌套加判断求解,第三种方法比较另类,先判断一个大致范围再遍历,第四种方法运用python内置的permutations函数直接生成包含3个数字的元组。综合来看,第四种方法更简洁
python练习实例1--------给定数字组成三位数的更多相关文章
- 【python】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
# encoding:utf-8 # p001_1234threeNums.py def threeNums(): '''题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多 ...
- java——有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
package java_day10; /* * 有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? */ public class Demo04 { public stat ...
- C语言实例-能组成多少个三位数?
题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 源代码: #i ...
- js中:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- python3 题目 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
方法一:for循环遍历 counter=0 for i in range(1,5): for j in range(1,5): for k in range(1,5): if i !=j and j ...
- 【Python】【demo实验5】【练习实例】【多个数字组合成不重复三位数】
题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源代码 ...
- 快速入门:Python简单实例100个(入门完整版)
Python3 100例 文章目录 Python3 100例 实例001:数字组合 实例002:“个税计算” 实例003:完全平方数 实例004:这天第几天 实例005:三数排序 实例006:斐波那契 ...
- Python 练习实例1
Python 练习实例1 题目:有四个数字:1.2.3.4,能组成多少个互不相https://www.xuanhe.net/同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都 ...
- 通过游戏学python 3.6 第一季 第一章 实例项目 猜数字游戏--核心代码 可复制直接使用 娱乐 可封装 函数
本文实例讲述了python实现的简单猜数字游戏.分享给大家供大家参考.具体如下: 给定一个1-99之间的数,让用户猜数字,当用户猜错时会提示用户猜的数字是过大还是过小,知道用户猜对数字为止,猜对数字用 ...
随机推荐
- Linux 内存清理
1. Clear PageCache only.sync && echo 1 > /proc/sys/vm/drop_caches2. Clear dentries and in ...
- vim 高级编辑技巧
建议参考IBM官方文档https://www.ibm.com/developerworks/cn/linux/l-cn-tip-vim/ 重新输入以前输入过的某条命令Ctrl + r 全局替换格式:& ...
- HAOI2017 简要题解
「HAOI2017」新型城市化 题意 有一个 \(n\) 个点的无向图,其中只有 \(m\) 对点之间没有连边,保证这张图可以被分为至多两个团. 对于 \(m\) 对未连边的点对,判断有哪些点对满足将 ...
- Swarm部署集群
swarm-manager 是 manager node,swarm-worker是 worker node.所有节点的 Docker 版本均不低于 v1.12.在master上 docker swa ...
- Codeforces Round #516 (Div. 2)D. Labyrinth(BFS)
题目链接:http://codeforces.com/contest/1064/problem/D 题目大意:给你一个n*m的图,图中包含两种符号,'.'表示可以行走,'*'表示障碍物不能行走,规定最 ...
- Ubuntu16.04下的NetCore环境搭建(附录含Ubuntu 18.04 安装 NetCore2.1)
跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux VSCode安装:http://www.cnblogs.com/dunitia ...
- git init github
Command line instructions 执行这些命令是在windows 右菜单里面的git bash运行. Git global setup git config --global use ...
- empty() 与 html("") 的区别
empty,首先循环给后代元素移除绑定.清除jquery给此dom的cache,然后循环removeFirstChild. 而html(''),则是简单暴力的设置innerHTML = ''; 查看文 ...
- How MVC pattern Flows
以上MVC流程中Model和View不存在依赖关系 以上MVC流程View和Model存在耦合关系(依赖关系越少越好)
- react-native中使用长列表
React Native 提供了几个适用于展示长列表数据的组件,一般而言我们会选用FlatList或是SectionList. FlatList组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而 ...