1、有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?分别是多少?
#先定义一个判断一个三位数是否符合条件的函数
def isMynumber(n):
a=int(n%10)
b=int(n/10%10)
c=int(n/100)
if(a==b)or(b==c)or(c==a):
return False
else:
return True
count=0
#百位数
for i in range(1,5):
#十位数
for j in range(1,5):
#个位数
for k in range(1,5):
number=i*100+j*10+k
if isMynumber(number):
count=count+1
print("发现一个符合条件的数:"+str(number))
else:
print(str(number)+"不符合条件!")
print("总共有"+str(count)+"个符合条件的数字。")
注:如果a,b,c不强制为int,会作为float数据影响条件判断。
#仅对于这道题,也可以使用更直接一些的方法
#设置计数器
count=0
#百位数
for i in range(1,5):
#十位数
for j in range(1,5):
if i==j:
continue
#个位数
for k in range(1,5):
if k==i or k==j:
continue
number=i*100+j*10+k
count=count+1
print("找到一个符合条件的数:"+str(number))
print("总共有"+str(count)+"个符合条件的数字。")
2、一个整数,加上100后是一个完全平方数,再加上168又是一个完全平方数,这个数为多少。
#一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,这个数为多少
import math
#先定义一个判断是否为完全平方数的函数
def isWp(n):
m=int(math.sqrt(n))
if n==m*m:
return True
else:
return False
#只找一万以内
for i in range(10000):
x=i+100
y=x+168
if isWp(x) and isWp(y):
print("这个数是:"+str(i))
print(math.sqrt(x),math.sqrt(y))
3、输入某年某月某日,判断这一天是这一年的第几天
#输入某年某月某日,判断这一天是这一年的第几天
"""思路
1、定义一个判断年份是否为闰年的函数
2、如果年份为闰年,月份小于等于2,则正常计算
3、如果年份为闰年,月份大于2,则闰年天数须加1
"""
#判断闰年的函数
def isLeapyear(year):
if year%400==0 or(year%4==0 and year%100!=0):
return True
else:
return False
#提示输入年月日
year=int(input("请输入要判断的年份:"))
month=int(input("请输入要判断的月份:"))
date=int(input("请输入要判断的日期:"))
#设置一个固定月天数的元组,设置初始统计值
days_count=0
days=(31,28,31,30,31,30,31,31,30,31,30,31)
for i in range(month):
days_count=days_count+days[i]
#如果年份为闰年,月份小于等于2,则正常计算
if isLeapyear(year) and month<=2:
days_count=days_count+1
print("这一天是"+str(year)+"年的第"+str(days_count)+"天。")
基础不牢固,在提示输入代码时忘记数据类型需要转换导致运行报错。
4、输入三个整数x,y,z,请把这三个数由小到大输出
#输入三个整数x,y,z,请把这三个数由小到大输出
x=int(input("请输入x的数值:"))
y=int(input("请输入y的数值:"))
z=int(input("请输入z的数值:"))
if x<y<z:
print("从小到大排序分别是x:"+str(x)+"-y:"+str(y)+"-z:"+str(z))
elif x<z<y:
print("从小到大排序分别是x:"+str(x)+"-z:"+str(z)+"-y:"+str(y))
elif y<x<z:
print("从小到大排序分别是y:"+str(y)+"-x:"+str(x)+"-z:"+str(z))
elif y<z<x:
print("从小到大排序分别是y:"+str(y)+"-z:"+str(z)+"-x:"+str(x))
elif z<x<y:
print("从小到大排序分别是z:"+str(z)+"-x:"+str(x)+"-y:"+str(y))
elif z<y<x:
print("从小到大排序分别是z:"+str(y)+"-y:"+str(z)+"-x:"+str(x))
5、输出9*9乘法表
#输出9*9乘法表
for i in range(1,10):
for j in range(1,i+1):
print(str(j)+"*"+str(i)+"="+str(i*j),end=" ")
if i*j<10:
print(" ",end="")
print()
6、判断101-200之间有多少素数,并输出
#判断101-200之间有多少素数,并输出
import math
def isPrime(n):
if n<2:
return False
elif n==2:
return True
else:
m=int(math.sqrt(n))
for i in range(2,m+1):
if n%i==0:
return False
return True
for i in range(101,201):
if isPrime(i):
print(i,end=" ")
7、打印出所有的“水仙花数”,所谓的水仙花数是指一个三位数,其各位数字立方和等于该数本身.如153。
"""打印出所有的“水仙花数”,所谓的水仙花数是指一个三位数,
其各位数字立方和等于该数本身.如153。
"""
def isSxh(n):
if n<100 or n>999:
return False
else:
b=int(n/100)
s=int(n/10%10)
g=int(n%10)
if ((b*b*b+s*s*s+g*g*g)==n):
return True
else:
return False
for i in range(100,1000):
if isSxh(i):
print(i,end=" ")
8、将一个正整数分解质因数,例如:输入90,打印出90=2×3×3×5。
#将一个正整数分解质因数,例如:输入90,打印出90=2×3×3×5。
import math
def isPrime(n):
if n<2:
return False
elif n==2:
return True
else:
m=int(math.sqrt(n))
for i in range(2,m+1):
if n%i==0:
return False
return True
"""
使用递归算法,每次都找出最小的质因数
然后循环调用
"""
def printNumber(n):
if isPrime(n):
print(n,end="")
else:
for i in range(1,n+1):
if isPrime(i) and n%i==0:
print(str(i)+"*",end="")
printNumber(int(n/i))
break
number=int(input("请输入一个正整数:"))
print(str(number)+"=",end="")
printNumber(number)