python 菜鸟教程

本文介绍了如何使用Python编程实现水仙花数的检测(一个三位数,其各位数字立方和等于该数本身),以及如何分解正整数的质因数。通过for循环和条件逻辑,展示了如何判断并输出符合要求的结果。
摘要由CSDN通过智能技术生成

13 水仙花数

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

for n in range(100,1001):
    i = n // 100  # // - 整除,得到百位数
    j = n // 10 % 10  # // - 先整除,得到前两位,然后除以10取余数得到十位数
    k = n % 10 #  三位数除以10的余数直接就是个位数
    if n == i*i*i + j*j*j + k*k*k:  # if要加冒号
        print(n)   #if下面的语句要缩进

153

370

371

407

1000

14 循环嵌套

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

分析:

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

如果n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

如果n不能被k整除,则用k+1作为k的值,重复执行第一步

原文链接:

python-将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5_将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。-CSDN博客

# 先判断数字是否大于1
# 数字 = 1,则直接输出
n = int(input('请输入一个整数:'))
while n <= 1:
    if n == 1:
        print('%d 的因子是1' % n)  #end=''表示输出不换行
        break
    else:
        print("请输入一个大于1的正整数")
        break
while n > 1:  # 数字大于1,需要进行判断
    for i in range(2, n + 1):  #循环寻找因子
        if n % i == 0:   #先看是否能被2整除,比如n = 10
            n = int(n / i)  # 能被2整除后把,继续赋值给n进行循环,10/2=5,此时n=5,继续执行循环
            if n == 1:  #循环直到n== 1,代表循环结束,不能再继续往下除了,输出不换行
                print('%d' % i, end='')
            else:  #如果循环过程中n!=1,则每次继续,输出不换行
                print('%d*' % i, end='')
            break
print()

请输入一个整数:80

2*2*2*2*5

#!/usr/bin/python3

def reduceNum(n):
    print('{} = '.format(n), end=" ")
    if not isinstance(n, int) or n <= 0:  # 判断输入的数字是否大于0
        print('请输入一个正确的数字 !')
        exit(0)
    elif n in [1]:
        print('{}'.format(n))
    while n not in [1]:  # 循环保证递归
        for index in range(2, n + 1):
            if n % index == 0:
                n //= index  # n 等于 n//(整除)ndex,整除后n=1
                if n == 1:
                    print(index)
                else:  # index 一定是素数
                    print('{} *'.format(index), end=" ")
                break


reduceNum(90)
reduceNum(100)

请输入一个整数:80

2*2*2*2*5

#while 必须加break跳出无限循环

15 学生成绩给出A/B/C等级

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

a = int(input(">"))
if a >= 90:
    print("该生的成绩为A")
if a >= 60 and a <= 89:
    print("该生的成绩为B")
if a <= 60:
    print("该生的成绩为C")

>70

该生的成绩为B

a = int(input(">"))
if a >= 90:
    print("该生的成绩为A")
elif a >= 60:
    print("该生的成绩为B")
else:
    print("该生的成绩为C")

>30

该生的成绩为C

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值