鱼C论坛

 找回密码
 立即注册
查看: 10186|回复: 3

【问】n in [1] 这是起什么作用,这是什么用法

[复制链接]
发表于 2016-11-4 09:45:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 rocyjp 于 2016-11-21 22:55 编辑

'''题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
    程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
    (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
    (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
    (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
  1. def reduceNum(n):
  2.     print ('{} = '.format(n),end='')                       # 使用 format 函数格式化字符串
  3.     if not isinstance(n, int) or n <= 0 :                  #如果 n的类型不是整数或者不是正数
  4.         print ('请输入一个正确的数字 !')
  5.         exit(0)                                             #无错误退出程序
  6.     elif n in [1] :
  7.         print ('{}'.format(n))[/color]
  8.     while n not in [1] : # 循环保证递归
  9.         for index in range(2, n + 1) :
  10.             if n % index == 0:
  11.                 n //= index # n 等于 n/index
  12.                 if n == 1:
  13.                     print (index)
  14.                 else : # index 一定是素数
  15.                     print ('{} *'.format(index),end='')
  16.                 break
  17. reduceNum(101)
  18. reduceNum(100)
复制代码

                 问题,  n  in [1],  这里的  [1]是什么用法?跟 fomat  有关系吗? 不应该是【0】吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-4 09:57:53 | 显示全部楼层
应该是判断输入的数值是不是1把
如果是1,则不用循环,他的质因子就是1本身
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-11-4 10:02:49 | 显示全部楼层
n in [1]应该等同于n == 1,这样写法更晦涩,不知原作者的目的,是否效率更高?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-11-4 10:12:39 | 显示全部楼层
冬雪雪冬 发表于 2016-11-4 10:02
n in [1]应该等同于n == 1,这样写法更晦涩,不知原作者的目的,是否效率更高?

哦,知道了,谢谢!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-23 17:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表