Python基础习题(一)

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)
  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值