ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python学习——编程基础

2022-02-25 20:58:16  阅读:149  来源: 互联网

标签:语句 迭代 python self 编程 生成器 else 学习 print


(一)条件控制

一、if语句

if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3

*if语句的关键字为:if – elif – else。

注意:

  1. 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  2. 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  3. 在Python中没有switch – case语句。

eg1:

#!/usr/bin/python3
 
age = int(input("请输入你家狗狗的年龄: "))
print("")
if age <= 0:
    print("你是在逗我吧!")
elif age == 1:
    print("相当于 14 岁的人。")
elif age == 2:
    print("相当于 22 岁的人。")
elif age > 2:
    human = 22 + (age -2)*5
    print(f"相当于{human}岁的人。")#f-string使用方法

### 退出提示
input("点击 enter 键退出")

eg2:

#!/usr/bin/python3 
 
# 该实例演示了数字猜谜游戏
number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
    guess = int(input("请输入你猜的数字:"))
 
    if guess == number:
        print("恭喜,你猜对了!")
    elif guess < number:
        print("猜的数字小了...")
    elif guess > number:
        print("猜的数字大了...")

二、if嵌套

在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。
eg:

num=int(input("请输入一个数字:"))

if num%2==0:
    if num%3==0:
        print(f"数字{num}可以整除2和3")
    else:
        print(f"数字{num}可以整除2但不能整除3")
else:
    if num%3==0:
        print(f"数字{num}不能整除2但可以整除3")
    else:
        print(f"数字{num}既不能整除2也不能整除3")

(二)循环语句

  • for
  • while

一、while循环

同条件控制一样,需要注意冒号和缩进。另外,在 Python 中没有 do…while 循环。

#计算0到num之和
num=int(input("请输入一个数字"))
sum=0
i=1
while(i<=num):
    sum=sum+i
    i=i+1
print(f"0到{num}之和等于{sum}")

无限循环:
设置条件表达式永远不为 false 来实现无限循环。

var = 1
while var == 1 :  # 表达式永远为 true
   num = int(input("输入一个数字  :"))
   print ("你输入的数字是: ", num)
 
print ("Good bye!")

while 循环使用 else 语句

count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")

二、for语句

“Baidu”, “Google”,“Runoob”,"Taobao"依次进入for循环中,当轮到Runoob进入if判断 if site == “Runoob”:时,执行break语句,跳出for循环,完成循环。break 语句用于跳出当前循环体

sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
    if site == "Runoob":
        print("菜鸟教程!")
        break
    print("循环数据 " + site)
else:
    print("没有循环数据!")
print("完成循环!")

range()函数
使用内置range()函数,遍历数字序列。

>>> for i in range(5):
...   print(i)
...
0
1
2
3
4
>>> for i in range(5,9):
...   print(i)
...
5
6
7
8
>>> for i in range(0,10,3):#3指定不同的增量
...   print(i)
...
0
3
6
9
>>> for i in range(-10,-100,-30):
...   print(i)
...
-10
-40
-70

结合range()和len()函数遍历一个序列的索引

a=['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']

for i in range(len(a)):
    print(f"{i}-{a[i]}")

(三)迭代器与生成器

一、迭代器

迭代:访问集合元素的一种方式
迭代器:可以记住遍历的位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器两个基本方法
1.iter()
2.next()

字符串,列表或元组对象都可用于创建迭代器:
iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 next() 方法并通过 StopIteration 异常标识迭代的完成。

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    x = self.a
    self.a += 1
    return x
 
myclass = MyNumbers()
myiter = iter(myclass)
 
for x in range(5) :
    print(next(myiter))

StopIteration
StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 next() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。
在20次迭代后停止循环:

class MyNumbers:
  def __iter__(self):
    self.a = 1 #起始数字
    return self
 
  def __next__(self):
    if self.a <= 20: #迭代到20停止
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
 
myclass = MyNumbers()
myiter = iter(myclass)
 
for x in myiter:
  print(x)

二、生成器

生成器:使用了 yield 的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
调用一个生成器函数,返回的是一个迭代器对象。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行

斐波那契数列_生成器

#!/usr/bin/python3
 
import sys
 
def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

标签:语句,迭代,python,self,编程,生成器,else,学习,print
来源: https://blog.csdn.net/day0713/article/details/123139572

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有