3.1丨数组

while循环

如果if语句的条件表达式结果为True,则运行if语句的附属代码,如果条件表达式结果为False,则跳过if语句附属代码。
while语句类似,只是它的附属代码块可以运行多次。 只要条件成立,其中的语句就会重复执行。 一旦某次条件表达式的判定为False,就会跳出循环,执行之后的代码。

while 条件表达式:
满足条件时要执行的命令1
满足条件时要执行的命令2
在程序第一次运行到while语句的时候,先进行条件表达式的判断,如果是False,直接跳过整个while循环整体;如果是True,则运行一次附属代码块,然后重新判定条件表达式是否为True,如果是,则再运行一次附属代码块,然后再判定条件表达式…直到某一次判定条件表达式时,判定结果为False了,此时停止循环,退出整个while循环整体,程序向后运行。

i = 1
while i <=5:
    print(i)
    i = i + 1
print("Finished!")
   while循环体(循环体就是之前我们说的“附属代码块”)中的代码被重复执行,这称为迭代。

break语句

如果我们想过早(在条件表达式变为False之前)地结束while循环,可以使用break语句。
当程序运行过程中,在循环时遇到break,这时break语句会使循环立即结束。

continue语句

 与break不同,如果碰到continue,程序会跳回到循环的顶部(跳过单次循环的后续附属代码),而不是停止整个循环。
i = 0
while True:
  i = i +1
  if i == 2:
     print("Skipping 2")
     continue
  if i == 5:
     print("Breaking")
     break
  print(i)
print("Finished")
i = 0
while True:
    i = i +1
    if i == 2:
        print(("Skipping ")+str(i))
        continue
    if i == 5:
        print(("Breaking at ")+str(i))
        break
    print(i)
    print("Finished") 

运行结果:

1
Finished
Skipping 2
3
Finished
4
Finished
Breaking at 5

数组(lists)

 数组是Python中的另一种对象。 它们用于存储一系列值,也就是说,一个数组里可以存储多个独立值。
使用方括号创建数组,数组里的每个值称为数组的元素。元素与元素之间使用逗号分隔。
可以利用方括号中某个元素的位次(索引值)来直接调用数组中的这个特定元素。

如果想检查某个元素是否在数组中,可以使用in运算符。 如果这个元素在数组中出现一次或多次,就返回True,否则返回False。
如果想检查某个元素是否不在数组中,可以按以下这几种方式来使用not运算符。

nums = [1, 2, 3]
print(not 4 in nums)
print(4 not in nums)
print(not 3 in nums)
print(3 not in nums)
改变数组的另一种方法是使用**append函数**。 这会将一个新的元素添加到现有数组的末尾。

在append前面的点,表示它是“数组”这个类的方法。 方法将在后面的文章中详细解释。

要获取数组中的元素数,可以使用**len函数**。
nums = [1, 2, 3]
nums.append(4)
print(nums)
print(len(nums))
[1, 2, 3, 4]
4
 还有一个方法叫**insert**,类似于append,它允许我们在数组中的任何位置插入新元素,而不仅仅是在最后。我们通过把要插入的位置的索引值当做一个参数,来确定插入的位置。(比如下面例子中那个红色的1,表示新插入的元素在插入后的数组中位于索引值为1的位置,也就是新元素是插入后数组的第二个元素)
words = ["Python", "fun"]
words.insert(1, "is")
print(words)
['Python', 'is', 'fun']

还有一个方法叫index,它被用来查找数组中的第一个与指定的查找内容相匹配的数组内元素,并返回其索引值。
如果指定的内容不在数组中,则会引发ValueError。

letters = ['p', 'q', 'r', 's', 'p', 'u']
print(letters.index('r'))
print(letters.index('p'))
print(letters.index('z'))

range函数

range函数被用来创建一个连续的数字数组。
举个例子,下面的代码可以生成一个包含10个连续整数的数组,默认从0开始数。
numbers = list(range(10))
print(numbers)
   要注意的是,在上面例子的代码中,我把range(10)的结果先利用list()函数转换成了数组类型,然后才赋予给了numbers。也就是说,在这里,“转换成数组类型”这一步是必要的,因为range函数本身的返回结果是一个range类型的对象,而非list类型。如果要将其赋值给一个数组对象,则必须先将其转换为数组。
 正如上文所说,如果只使用一个参数调用range函数(也就是说range后面的括号里只写一个参数),那么range函数会生成一个range对象,这个range对象里面的值从0开始,range对象里的元素总数等于该参数。
如果使用两个参数调用它,它将生成从第一个参数到第二个参数(不含第二个参数)的range对象。
numbers = list(range(3, 8))
print(numbers)
numbers = list(range(3))
print(numbers)
print(range(20) == range(0, 20))

另外,range函数还可以有第三个参数,用来规定每两个元素之间的差值。

numbers = list(range(5, 20, 2))
print(numbers)

while循环和数组的组合使用

有时,我们需要在数组中的每个元素上执行代码,这称为迭代,可以使用while循环和计数器变量来完成。

words = ["hello", "world", "spam", "eggs"]
counter = 0
max_index = len(words) - 1
while counter <= max_index:
    word = words[counter]
    print(word + "!")
    counter = counter + 1 
 最大的索引值(上面例子中以max_index变量表示)比总元素数量少1,因为索引值是从0开始数的。

for循环

 如果使用while循环来遍历数组,需要相当多的代码,因此Python提供了for循环作为实现相同功能的简便方式。
可以使用for循环编写前一个示例中的相同功能的代码,如下所示:
words = ["hello", "world", "spam", "eggs"]
for word in words:
    print(word + "!")
Python中的for循环与其他语言中的for循环有所区别,类似于C语言等语言中的foreach循环方式。

for循环通常用于重复执行某些代码一定的次数。 下面的例子是通过将for循环与range对象进行组合来完成的。
for i in range(5):
    print("hello!")

计算器代码

while True:
    print("Options:")
    print("Enter 'add' to add two numbers")
    print("Enter 'subtract' to subtract two numbers")
    print("Enter 'multiply' to multiply two numbers")
    print("Enter 'divide' to divide two numbers")
    print("Enter 'quit' to end the program")
    user_input = input(": ")
    if user_input == "quit":
        break
    elif user_input == "add":
         num1 = float(input("Enter a number: "))
         num2 = float(input("Enter another number: "))
         result = str(num1 + num2)
    elif user_input == "subtract":
        ...
    elif user_input == "multiply":
        ...
    elif user_input == "divide":
        ...
    else:
        print("Unknown input")
    print("The answer is " + result)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,320评论 0 2
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,072评论 0 3
  • Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行...
    穷人家的孩纸阅读 690评论 1 1
  • [The Swift Programming Language 中文版]本页包含内容: Swift提供了多种流程控...
    风林山火阅读 551评论 0 0
  • Swift提供了多种控制流声明。包括while循环来多次执行一个任务;if,guard和switch声明来根据确定...
    BoomLee阅读 1,931评论 0 3