for循环+数字类型补充

一、for循环

1、循环取值
 1.1列表类型:
   定义l=['a','b','c'],要提取列表中的值
   如果采用while循环的话:
    print(len(l))
    i=0
    while i<len(l):
       print(l[i])
             i+=1

   采用for循环的话会方便很多:
    l=['a','b','c']
    for item in l:
       print(item)

  这行代码让python从列表l中取出元素,并讲其存到变量item中,元素会被打印出来

  1.2字典类型:
   dic={'x':111,'y':222,'z':333}
   for item in dic:
      print(item)
   因此字典类型中默认打印的是key,所以以上结果为:x y z

    如果也想要取值的话:
   dic={'x':111,'y':222,'z':333}
   for k in dic: #k='x'
      print(k,dic[k])
      打印结果就是: x 111  y 222   z 333

  1.3 while循环 VS for循环:
   1.while循环:是条件循环,循环的次数取决于条件何时为False
      for循环:是迭代循环,循环的次数取决于数据中包含的元素的个数
    2.for循环专门用来取值,在循环取值方面要比while要强大。因此,遇到循环取值就选择for循环
    3.for循环可以取值列表、字典、和范围range

 1.4
   for+break 和while+break是一样的,break直接终止本层循环
   for+continue 和while+continue也一样,cont终止的是本次循环,不影响下次的循环
   for+else 和while+else也一样,else的子代块只有在while循环没有被break打断的情况下才会执行

 1.5 for循环嵌套
   for i in range(3)
      for j in range(2)
         print(i,j)
   每当外层循环循环一次,内层循环要循环一套
  

 二、数据类型补充
  数字类型:
    (一).整型
   1.类型转换:
      浮点型、纯数字的字符串可以转换为整型,如下:
     print(int(3.33))
     print(int('33333'))

   2.整型存一个值
   3.不可变类型

   (二)浮点型
   1.类型转换:
      整型、只有小数的字符串可以转换成浮点型,如下:
     print(float(333))
     print(float('33.333'))

 (三)补充:
   十进制转二进制:print(bin(13))
   十进制转八进制:print(oct(13))
   十进制转十六进制:print(hex(13))

 字符串类型:

  1.类型转换: 可以把任意类型专场字符串类型
   2.虽然只能存一个值,但是这个值可以有不止一个的字符,所以有序
   3.不可变类型
   4.按索引取值(正向取+反向取) :只能取
     字符串和列表一样,可以采用索引取值,但是列表取得是元素,字符串取得是字符,如下:
     正向取和列表一样,从0开始,不同的是字符串可以反向取,从后向前,从-1开始:
      msg='hello world'
      print(msg[0])  
      print(msg[-1])

   5.切片(顾头不顾尾,步长)--> 索引的扩展运用
      msg='hello world'
      print(msg[0:5:2])

    打印出来是:hlo 0代表的是从0起始,5代表到第五个,但是切片顾头不顾尾,所以不包括第五个。2是步长,意思是说隔两个数一次

     print(msg[0:])  

     打印出来是:hello world 如果不写终止,默认到最后,不写步长默认步长是1

  6.长度len:统计的是字符的个数
      msg='h你d'
      print(len(msg)) 打印出来是:3
   7.成员运算in和not in:判断一个子字符串是否存在与一个大字符串中
      msg='hello world'
      print('ho' in msg)  打印出来是False
      print('ho' not in msg)  打印出来是True   推荐使用这种
   8.移除空白strip:移除字符串左右两边的某些字符
      msg='      hello      '

     print(msg.strip(' '))
     print(msg.strip())
     因此去掉空格括号内可以打一个空格,也可以什么都不打,系统默认去掉空格,如果想要去掉*,括号就打*

   9.切分split: 把有规律的字符串切成列表从而方便取值
     info='egon:18:180:150'
     res=info.split(':',1)
     print(res)   打印出来是['egon', '18:180:150']
     print(res[1]) 打印出来是:18:180:150
     上面的代码中:的意思是说,从 :那里切分。1的意思是说,从左往右,遇到:不管后面还有没有,切分一次。

     res=info.split(':')  打印出来是['egon', '18', '180', '150']  括号内不写数字的话,就是说每一个:都要切分。

 补充(四星):
  1、strip,lstrip,rstrip
     msg='*****hello****'
     print(msg.strip('*'))
     print(msg.lstrip('*'))
     print(msg.rstrip('*'))


  2、lower,upper
     msg='AaBbCc123123123'
     print(msg.lower())
     print(msg.upper())

  3、startswith,endswith
     msg='alex is dsb'
     print(msg.startswith('alex'))
     print(msg.endswith('sb'))

  4、format的三种玩法  

    msg='my name is %s my age is %s' %('egon',18)  print(msg)

     msg='my name is {name} my age is {age}'.format(age=18,name='egon')  print(msg)

     format了解知识点:  msg='my name is {} my age is {}'.format(18,'egon')  msg='my name is {0}{0} my age is {1}{1}{1}'.format(18,'egon')  print(msg)

  5、split,rsplit
     cmd='get|a.txt|33333'
     print(cmd.split('|',1))
     print(cmd.rsplit('|',1))

  6、replace
     msg='kevin is sb kevin kevin'
     print(msg.replace('kevin','sb',2))

 

  7、isdigit   #当字符串内为纯数字时结果为True
     res='11111'
     print(res.isdigit())
     int(res)

 

  了解(**)
  1、find,rfind,index,rindex,count
     print('xxxkevin is sb kevin'.find('kevin'))    #寻找,没有显示-1
     print('xxxkevin is sb kevin'.index('kevin'))   #寻找,没有的话会报错
     print('xxxkevin is sb kevin'.rfind('kevin'))   #从右边寻找
     print('xxxkevin is sb kevin'.rindex('kevin'))   #从右边寻找

  2、center,ljust,rjust,zfill
     print('egon'.center(50,'*'))   #egon居中显示,*两端补充
     print('egon'.ljust(50,'*'))   #egon左边显示,*右边补充
     print('egon'.rjust(50,'*'))   #egon右边显示,*左边补充
     print('egon'.zfill(50))    #egon右边显示,默认0左边补充

  3、captalize,swapcase,title
     print('my name is kevin'.capitalize())  #整句话第一个字母大写
     print('AaBbCc'.swapcase())    #大写变小写,小写变大写
     print('my name is kevin'.title())    #每个单词首字母大写

   4、is其他
     name='egon123'
     print(name.isalnum())   #字符串由字母或数字组成
     print(name.isalpha())   #字符串只由字母组成

    print(name.islower())  #判断是否是小写
     print(name.isupper())  #判断是否是大写

     name='    '
     print(name.isspace())  #判断是否有空格
     msg='I Am Egon'
     print(msg.istitle())    #判断是否是首字母大写

 

 

  

 

转载于:https://www.cnblogs.com/zhangxin-/p/9997746.html

<think>好的,我现在需要帮助用户了解如何用while循环for循环实现具体功能,并提供示例代码进行比较。首先,我应该回顾用户提供的引用内容,看看有哪些可用的信息。 用户引用了四篇资料,其中引用[2]提到,while循环通常用于需要多次重复运行的情况,而for循环适合遍历字符串、列表等。同时,两者在功能上可以互相替代,但使用场景不同。引用[3]提到循环中的else语句会在循环完成后执行,除非被break中断。引用[4]展示了用不同循环和递归计算阶乘的例子,并提到了Scanner的使用。 用户的需求是比较while和for循环的实现,所以需要选择合适的功能来展示两者的代码。阶乘计算是个经典例子,可以同时用两种循环实现,便于比较。此外,遍历列表或字符串也是常见的例子,比如遍历字符串中的每个字符。 接下来,我需要确保代码符合用户的要求,比如Python的语法是否正确,以及是否包含必要的注释。同时,需要指出两者的区别和适用场景,帮助用户理解何时选择哪种循环。 可能还需要考虑用户对循环结构的熟悉程度,所以解释要清晰,分步骤说明。例如,在阶乘的例子中,while循环需要手动初始化变量和更新条件,而for循环则自动处理遍历范围。在遍历列表时,for循环更简洁,而while循环需要维护索引变量。 另外,用户提到示例代码比较,所以每个功能都需要两个版本的代码,并总结它们的异同。同时,根据引用[3],可以提到else在循环中的使用,虽然示例中可能用不到,但作为补充知识可能会有帮助。 最后,生成相关问题时要围绕循环的使用、区别、优化等方面,帮助用户进一步学习。需要检查引用标记是否正确添加,例如在提到遍历字符串时引用[2],提到阶乘实现时引用[4]。 总结步骤:先介绍两种循环的基本结构,然后分别用两个例子(阶乘和遍历列表)展示代码,比较它们的实现方式,最后总结区别和适用场景,并生成相关问题。</think>### 如何用 while 循环for 循环实现具体功能 `while` 循环和 `for` 循环是两种常见的循环结构,虽然功能相似,但适用场景略有不同[^2]。以下通过具体示例对比它们的实现方式。 --- #### 1. **计算数字的阶乘** **功能目标**:输入正整数 $n$,输出 $n! = 1 \times 2 \times \dots \times n$。 ##### **使用 while 循环** ```python n = 5 result = 1 i = 1 while i <= n: # 条件判断 result *= i i += 1 # 手动更新计数器 print(result) # 输出 120 ``` ##### **使用 for 循环** ```python n = 5 result = 1 for i in range(1, n+1): # 自动遍历 1 到 n 的范围 result *= i print(result) # 输出 120 ``` **对比**: - `while` 需手动初始化变量 `i` 并更新条件,适合不确定循环次数的情况(如读取用户输入直到满足条件); - `for` 自动遍历序列(如 `range` 生成的数字序列),代码更简洁,适合已知遍历范围的情况[^4]。 --- #### 2. **遍历列表元素** **功能目标**:遍历列表并打印所有元素。 ##### **使用 while 循环** ```python fruits = ["apple", "banana", "cherry"] index = 0 while index < len(fruits): # 根据索引条件循环 print(fruits[index]) index += 1 ``` ##### **使用 for 循环** ```python fruits = ["apple", "banana", "cherry"] for fruit in fruits: # 直接遍历元素 print(fruit) ``` **对比**: - `while` 需通过索引控制循环,灵活性更高(例如可动态修改列表长度); - `for` 直接操作元素,代码更简洁,适合简单遍历需求。 --- #### 3. **循环中的 else 语句** 两种循环均可配合 `else` 使用,在循环正常结束后执行(未被 `break` 中断)[^3]: ```python # while 循环示例 count = 0 while count < 3: print("执行中...") count += 1 else: print("循环正常结束") # for 循环示例 for i in range(3): print("执行中...") else: print("循环正常结束") ``` --- ### 总结:两种循环的核心区别 | 特性 | while 循环 | for 循环 | |---------------------|-------------------------------------|-----------------------------------| | **适用场景** | 不确定循环次数(如用户输入验证) | 已知遍历范围(如列表、字符串)[^2] | | **代码复杂度** | 需手动控制条件变量 | 自动迭代,代码更简洁 | | **灵活性** | 可动态调整循环条件 | 依赖固定序列 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值