python语法随记


学习python中的小记录…和YH约定的两周学习计划
工具:idle

1.字符串

字符串 字符串 就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,如下所示:

"This is a string."
'This is also a string.'

1.1 修改字符串的大小写

name.py

name = "ada lovelace"
print(name.title())

输出为
Ada Lovelace
示例中,小写的字符串"ada lovelace" 存储到了变量name 中。在print() 语句中,方法title() 出现在这个变量的后面。


方法
方法 是Python可对数据执行的操作。
在name.title() 中,name 后面的句点(. )让Python对变量name 执行方法title() 指定的操作。每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成
其工作。这种信息是在括号内提供的。函数title() 不需要额外的信息,因此它后面的括号是空的。
title() 以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。


要将字符串改为全部大写或全部小写

name = "Ada Lovelace"
print(name.upper())
print(name.lower())

输出为
ADA LOVELACE
ada lovelace
存储数据时,方法lower() 很有用。很多时候,你无法依靠用户来提供正确的大小写,因此需要将字符串先转换为小写,再存储它们。以后需要显示这些信息时,再将其转换为最合适的大小写方式。

1.2 合并(拼接)字符串

示例

  first_name = "ada"
  last_name = "lovelace"
❶ full_name = first_name + " " + last_name
 print(full_name)

Python使用加号(+ )来合并字符串。
本例输出为
ada lovelace
这种合并字符串的方法称为拼接。通过拼接,可使用存储在变量中的信息来创建完整的消息.

示例2

first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print("Hello, " + full_name.title() + "!")

本例使用了方法title() 来将姓名设置为合适的格式。输出为
Hello, Ada Lovelace!

1.3 使用制表符或换行符来添加空白

要在字符串中添加制表符,可使用字符组合\t,要在字符串中添加换行符,可使用字符组合\n。
代码示例(输出看看效果):

  print("Languages:\n\tPython\n\tC\n\tJavaScript")

1.4 删除空白

在程序中,额外的空白可能令人迷惑。对程序员来说,‘python’ 和’python ’ 看起来几乎没什么两样,但对程序来说,它们却是两个不同的字符串。
删除用户输入的数据中的多余的空白,可使用方法rstrip()。

❶ >>> favorite_language = 'python '
❷ >>> favorite_language
  'python '
❸ >>> favorite_language.rstrip()
  'python'
❹ >>> favorite_language
  'python '

存储在变量favorite_language 中的字符串末尾包含多余的空白(见❶)。你在终端会话中向Python询问这个变量的值时,可看到末尾的空格(见❷)。对变量favorite_language 调用方法rstrip() 后(见❸),这个多余的空格被删除了。然而,这种删除只是暂时的,接下来再次询问favorite_language 的值时,你会发现这个字符串与输入时一样,依然包含多余的空白(见❹)。
要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中:

  >>> favorite_language = 'python '
❶ >>> favorite_language = favorite_language.rstrip()
  >>> favorite_language
  'python'

剔除字符串开头的空白,或同时剔除字符串两端的空白。为此,可分别使用方法lstrip() 和strip() :

>>> favorite_language = ' python '
>>> favorite_language.rstrip()
' python'
>>> favorite_language.lstrip()
'python '
>>> favorite_language.strip()
'python'

在这个示例中,首先创建了一个开头和末尾都有空白的字符串,然后分别删除末尾、开头和两端的空格。

1.5 使用函数str() 避免类型错误

有时需要在消息中使用变量的值。例如,假设你要祝人生日快乐,可能会编写类似于下面的代码:
birthday.py

age = 23
message = "Happy " + age + "rd Birthday!"
print(message)

你可能认为,上述代码会打印一条简单的生日祝福语:Happy 23rd bi rthday!。但如果你运行这些代码,将发现它们会引发错误:
Traceback (most recent call last):
File “birthday.py”, line 2, in
message = "Happy " + age + “rd Birthday!”
❶ TypeError: Can’t convert ‘int’ object to str implicitly
Python发现你使用了一个值为整数(int )的变量,但它不知道该如何解读这个值。调用函数str() ,它让Python将非字符串值表示为字符串:

age = 23
message = "Happy " + str(age) + "rd Birthday!"
print(message)

此时输出为
Happy 23rd Birthday!

2. 列表

2.1 列表简介

列表中可以存储各种元素,他们之间可以是不同的类别。在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。
列表的索引从0开始

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[1])
print(bicycles[3])

输出为
cannondale(第二个元素)
specialized(第四个元素)
访问最后一个列表元素可以将索引指定为-1.

列表中的元素可以像变量那样被使用

>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>> message = "My first bicycle was a " + bicycles[0].title() + "."
>>> print(message)
My first bicycle was a Trek.

这里使用bicycles[0] 的值生成了一个句子,并将其存储在变量message 中。

2.2 修改列表元素

修改列表中的某一个元素:

 bicycles[0] = 'demo1'
 print (bicycles)

在列表末尾添加元素

bicycless.append('ducati')
print(motorcycles)

用方法append() 让动态地创建列表,可以先创建一个空列表,再使用一系列的append() 语句添加元素

   motorcycles = []
    motorcycles.append('honda')
    motorcycles.append('yamaha')
    motorcycles.append('suzuki')
    print(motorcycles)

在列表中插入元素,使用方法insert()

motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')
print(motorcycles)

输出
[‘ducati’, ‘honda’, ‘yamaha’, ‘suzuki’]

2.3 花样删除列表中的元素

1.利用索引从列表中删除元素
del motorcycles[1]
print(motorcycles)

2.方法pop() 可删除列表末尾的元素,并让你能够接着使用它。

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(popped_motorcycle)

列表末尾的值’suzuki’ 已删除,它现在存储在变量popped_motorcycle 中:
[‘honda’, ‘yamaha’, ‘suzuki’]
[‘honda’, ‘yamaha’]
suzuki
也可以使用pop() 来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。每当你使用pop() 时,被弹出的元素就不再在列表中了。
如果你不确定该使用del 语句还是pop() 方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;如果你要在删除元素后还能继续使用它,就使用方法pop() 。

3.根据值删除元素
有时候,你不知道要从列表中删除的值所处的位置。如果你只知道要删除的元素的值,可使用方法remove().
假设我们要从列表motorcycles 中删除值’ducati’ 。

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
motorcycles.remove('ducati')
print(motorcycles)

输出结果
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
[‘honda’, ‘yamaha’, ‘suzuki’]

4.使用remove() 从列表中删除元素时,也可接着使用它的值:

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
too_expensive = 'ducati'
motorcycles.remove(too_expensive)
print(motorcycles)

输出结果
[‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
[‘honda’, ‘yamaha’, ‘suzuki’]
注意  方法remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

2.4列表排序

使用方法sort() 对列表进行永久性排序

cars.py

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)

run 后得到输出(此时汽车是按字母顺序排列的,再也无法恢复到原来的排列顺序:)
[‘audi’, ‘bmw’, ‘subaru’, ‘toyota’]

也可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort() 方法传递参数reverse=True 。

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
cars.sort(reverse=True)
print(cars)

[‘audi’, ‘bmw’, ‘subaru’, ‘toyota’]
[‘toyota’, ‘subaru’, ‘bmw’, ‘audi’]

使用函数sorted() 对列表进行临时排序

要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(sorted(cars))
print(cars)

输出结果为
[‘audi’, ‘bmw’, ‘subaru’, ‘toyota’]
[‘bmw’, ‘audi’, ‘toyota’, ‘subaru’]
我们同样可以向函数sorted() 传递参数reverse=True .

反转列表元素的排列顺序

要反转列表元素的排列顺序,可使用方法reverse() 。注意,reverse() 不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序:

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)

[‘bmw’, ‘audi’, ‘toyota’, ‘subaru’]
[‘subaru’, ‘toyota’, ‘audi’, ‘bmw’]
方法reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse() 即可。

确定列表的长度

使用函数len() 可快速获悉列表的长度。列表包含4个元素,因此其长度为4.
len(cars)

避免列表索引错误和小结

索引-1 总是返回最后一个列表元素,当列表为空时,这种访问最后一个元素的方式才会导致错误。
小结
列表是什么以及如何使用其中的元素;
如何定义列表以及如何增删元素;
如何对列表进行永久性排序,以及如何为展示列表而进行临时排序;
如何确定列表的长度,以及在使用列表时如何避免索引错误。

3 操作列表

3.1 遍历整个列表

用for循环打印列表

magicians = ['alice', 'david', 'carolina']
for mags in magicians:
    print(mags)

码让Python从列表magicians 中取出一个名字,并将其存储在变
量mags中。然后让Python打印前面存储到变量mags中的名字.
输出为
alice
david
carolina
编写for 循环时,对于用于存储列表中每个值的临时变量,可指定任何名称。然而,选择描述单个列表元素的有意义的名称大有帮助。所以,其实,在本例中将mags换成magician会让程序更易读。使用单数和复数式名称,可帮助你判断代码段处理的是单个列表元素还是整个列表。

magicians = ['alice', 'david', 'carolina']
for mags in magicians:
    print(mags)
    print("I can't wait to see your next trick, " + mags.title() + ".\n")

顺带在每个循环多执行一个操作。
另外,别忘了for后面的冒号。

3.2 创建数值列表

3.2.1 range()

使用函数range() 来打印一系列的数字:

for value in range(1,5):
    print(value)

输出
1
2
3
4
函数range() 让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)

3.2.2 使用range() 创建数字列表

要创建数字列表,可使用函数list() 将range() 的结果直接转换为列表

>>> numbers = list(range(1,6))
>>> print(numbers)
[1, 2, 3, 4, 5]

使用函数range() 时,还可指定步长。例如,下面的代码打印1~10内的偶数:

>>> even_numbers = list(range(2,11,2))
>>> print(even_numbers)
[2, 4, 6, 8, 10]

何将前10个整数的平方加入到一个列表中(两个星号(**)表示乘方运算):

>>> squares = []  ##先创建空表
>>> for value in range(1,11):  ##遍历1-10
	square = value**2
	squares.append(square) ##将新计算得到的平方值附加到列表squares 末尾

	
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

简洁写法(在循环中,计算每个值的平方,并立即将结果附加到列表squares 的末尾。)

 squares.append(value**2)

3.2.3 对数字列表进行简单统计(max,min,sum)

>>> min(squares)
1
>>> max(squares)
100
>>> sum(squares)
385

3.3.4 列表解析

将for 循环和创建新元素的代码合并成一行,并自动附加新元素。

>>> squares = [value**2 for value in range(1,11)]
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

方括号里定义了一个表达式,表达式为value2 ,它计算平方值。接下来,编写一个for 循环,用于给表达式提供值。
示例中,for 循环为for value in range(1,11) ,它将值1~10提供给表达式value
2 。请注意,这里的for 语句末尾没有冒号。

3.4 处理列表的部分元素——切片

3.4.1 切片

用切片可以生成列表的任何子集,如,提取列表的第2~4个元素,可以将起始索引指定为1 ,并将终止索引指定为4 :

>>> players = ['charles', 'martina', 'michael', 'florence', 'eli']
>>> print(players[1:4])
['martina', 'michael', 'florence']

这里切片始于’marita’ ,终于’florence’
如果你没有指定第一个索引,Python将自动从列表开头开始:

>>> print(players[:4])
['charles', 'martina', 'michael', 'florence']

让切片终止于列表末尾,也可使用类似的语法。

>>> print(players[2:])
['michael', 'florence', 'eli']

负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任何切片。
例如,如果你要输出名单上的最后三名队员,可使用切片players[-3:] :

>>> players[-3:]
['michael', 'florence', 'eli']

3.4.2 遍历切片

遍历前三名队员,并打印他们的名字:

>>> for player in players[:3]:
	print(player.title())

	
Charles
Martina
Michael

典型应用:获取玩家游戏的最高分,将列表降序后,创建一个只包含前三个得分的切片即可。

3.4.3 复制列表

复制列表用法:

>>> new_players = players[:]
>>> print(new_players)
['charles', 'martina', 'michael', 'florence', 'eli']
>>> new_players.append('lzz')
>>> players.append('old_p')
>>> print(players)
['charles', 'martina', 'michael', 'florence', 'eli', 'old_p']
>>> print(new_players)
['charles', 'martina', 'michael', 'florence', 'eli', 'lzz']

不用的列表加上不同元素,说明确实复制上了。这里,我们在不指定任何索引的情况下从列表players中提取一个切片,从而创建了这个列表的副本,再将该副本存储到变量new_players中。

如果写成这样,两个变量会指向同一个列表。并不是创建副本
new_players = players
可以看看效果

>>> my_foods = ['pizza', 'falafel', 'carrot cake']
>>> friend_foods = my_foods
>>> my_foods.append('cannoli')
>>> friend_foods.append('ice cream')
>>> print(my_foods)
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
>>> print(friend_foods)
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
>>> friend_foods.append('yyy')
>>> print(my_foods)
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream', 'yyy']

不管在my_foods还是在friend_foods做改变,最终都会影响到两个变量~

3.5 元组

列表是可以修改的,这对处理网站的用户列表或游戏中的角色列表至关重要。
而不可变的列表被称为元组 。
元组使用了圆括号而不是方括号。

>>> dimensions = (200, 50)
>>> print(dimensions[1])
50
>>> dimensions[0] = 250
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    dimensions[0] = 250
TypeError: 'tuple' object does not support item assignment

示例告诉我们,对元组的元素进行修改的操作是被禁止的。

虽然不能修改元组的元素,但可以给存储元组的变量赋值。

dimensions = (200, 50)
dimensions = (400, 100)
for dimension in dimensions:
      print(dimension)

输出
400
100

4 if语句

这一章内容好像比较少,这里只摘录部分。
例1,检查当前汽车名是否为’bmw’,若是,以全大写打印。

cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:
    if car == 'bmw':
        print(car.upper())
    else:
        print(car.title())

Audi
BMW
Subaru
Toyota

检查是否相等,不相等会返回False

>>> car = 'bmw'
>>> car == 'bmw'
True

检查是否不相等用 !=

用and检查多个条件,检查是否两个条件是否都满足

age_0 >= 21 and age_1 >= 21

用or检查多个条件,只要有一个条件满足就可以

检查特定值是否包含在列表中(比如结束用户的注册过程前,可能需要检查他提供的用户名是否已包含在用户名列表中。在地图程序中,可能需要检查用户提交的位置是否包含在已知位置列表中。)

>>> stdlist=['a','b','c']
>>> 'c' in stdlist
True

检查特定值是否不包含在列表中可使用关键字not in

if-else语句
if age >= 18:
	...
else:
	...

if-elif-else结构

5. 字典

5.1 简单的例子
存储了有关特定外星人的信息的字典(字典alien_0 存储了外星人的颜色和点数):

alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
print(alien_0['points'])

输出
green
5

在Python中,字典 是一系列 键 —值对 (花括号中)。每个键 键 都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
键和值之间用冒号分隔,而键—值对之间用逗号分隔。
键 —值对是两个相关联的值。指定键时,Python将返回与之相关联的值。

5.2 使用字典(创建访问修改添加删除)

添加键 —值对

alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
print(alien_0['points'])
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)

输出
green
5
{‘color’: ‘green’, ‘points’: 5, ‘x_position’: 0, ‘y_position’: 25}

创建空字典

先使用一对空的花括号定义一个字典,再分行添加各个键—值对。

alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)

输出
{‘color’: ‘green’, ‘points’: 5}

修改

alien_0 = {'color': 'green'}  
alien_0['color'] = 'yellow'   #直接进行修改即可,亦可在实现中随时更新,如位置+increase增量

删除键 —值对 del

alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)

输出
{‘color’: ‘green’, ‘points’: 5}
{‘color’: ‘green’}

由类似对象组成的字典

可以使用字典来存储众多对象的同一种信息。例如,假设你要调查很多人,询问他们最喜欢的编程语言,可使用一个字典来存储这种简单调查的结果,如下所示:

每个键都是一个被调查者的名字,而每个值都是被调查者喜欢的语言。给定被调查者的名字,可使用这个字典轻松地获悉他喜欢的语言:
favorite.py

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
print("Sarah's favorite language is " +
favorite_languages['sarah'].title() +
".")

输出
Sarah’s favorite language is C.

>>> favorite_languages['sarah']
'c'

5.3 遍历字典

遍历所有 键-值对 items()

示例:获悉该用户字典中的所有信息

user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
    }
for key, value in user_0.items():
    print("\nKey: " + key)
    print("Value: " + value)

输出
Key: username
Value: efermi

Key: first
Value: enrico

Key: last
Value: fermi
要编写用于遍历字典的for 循环,可声明两个变量,用于存储键—值对中的键和值。对于这两个变量,可使用任何名称。字典名和方法items()返回一个键—值对列表。
【注意】即便遍历字典时,键—值对的返回顺序也与存储顺序不同。Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系。

遍历所有 键 keys()

不需要使用字典中的值时,使用方法keys()

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
for name in favorite_languages.keys():
    print(name.title())

输出
Jen
Sarah
Edward
Phil
for那行代码提取字典favorite_languages 中的所有键,并依次将它们存储到变量name 中。
亦可替换为
for name in favorite_languages:
输出不变。


示例:检查当前的名字是否在列表friends 中,如果在就打印一条问候语。

favorite_languages = {
‘jen’: ‘python’,
‘sarah’: ‘c’,
‘edward’: ‘ruby’,
‘phil’: ‘python’,
}
friends = [‘phil’, ‘sarah’]
for name in favorite_languages.keys():
if name in friends:
print(" Hi " + name.title() +
", I see your favorite language is " +
favorite_languages[name].title() + “!”)


还可以使用keys() 确定某个人是否接受了调查。下面的代码确定Erin是否接受了调查:

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
if 'erin' not in favorite_languages.keys(): ##(1)
    print("Erin, please take our poll!")

方法keys() 并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键,因此(1)处的代码行只是核实’erin’ 是否包含在这个列表中。由于她并不包含在这个列
表中,因此打印一条消息,邀请她参加调查:输出
Erin, please take our poll!

按顺序遍历字典中的所有键sorted()

获取字典的元素时,获取顺序是不可预测的。要以特定的顺序返回元素,一种办法是在for 循环中对返回的键进行排序。可使用sorted()

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
for name in sorted(favorite_languages.keys()):
    print(name.title() + ", thank you for taking the poll.")

遍历字典中的所有值values()

返回一个值列表,而不包含任何键。

for language in favorite_languages.values():
    print(language.title())

这条for 语句提取字典中的每个值,并将它们依次存储到变量language 中。通过打印这些值,就获得了一个列表,其中包含被调查者选择的各种语言。

这种做法提取字典中所有的值,而没有考虑是否重复。
为剔除重复项,可使用集合(set)。集合 类似于列表,但每个元素都必须是独一无二的:

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):  ##***
    print(language.title())

这样结果会是一个不重复的列表,输出如下
The following languages have been mentioned:
Ruby
Python
C

5.4 嵌套

有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为“嵌套” 。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

字典列表(列表中都是字典)

alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}

aliens = [alien_0, alien_1, alien_2]
for alien in aliens:
    print(alien)
'''
首先创建了三个字典,其中每个字典都表示一个外星人。将这些字典都放到一个名为aliens 的列表中。
最后,遍历这个列表.
'''

{‘color’: ‘green’, ‘points’: 5}
{‘color’: ‘yellow’, ‘points’: 10}
{‘color’: ‘red’, ‘points’: 15}

示例:外星人不止3个,且都是使用代码自动生成(range)

# 创建一个用于存储外星人的空列表
aliens = []

# 创建30个绿色的外星人
#range() 返回一系列数字,其唯一的用途是告诉Python我们要重复这个循环多少次。
for alien_number in range(30):   
     new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
     aliens.append(new_alien)

# 显示前五个外星人,使用一个切片来打印前五个外星人
for alien in aliens[:5]:
   print(alien)
print("...")
# 显示创建了多少个外星人,打印列表的长度,以证明确实创建了30个外星人:
print("Total number of aliens: " + str(len(aliens)))

输出
{‘color’: ‘green’, ‘points’: 5, ‘speed’: ‘slow’}
{‘color’: ‘green’, ‘points’: 5, ‘speed’: ‘slow’}
{‘color’: ‘green’, ‘points’: 5, ‘speed’: ‘slow’}
{‘color’: ‘green’, ‘points’: 5, ‘speed’: ‘slow’}
{‘color’: ‘green’, ‘points’: 5, ‘speed’: ‘slow’}

Total number of aliens: 30

修改某些外星人的部分信息,可以这么做

for alien in aliens[0:3]:
    if alien['color'] == 'green':
        alien['color'] = 'yellow'
        alien['speed'] = 'medium'
        alien['points'] = 10

可以用之前学过的if-elif等结构自由按自己的设定进行修改。

在字典中存储列表

举个栗子,我们要描述顾客点的比萨,如果使用列表,只能存储要添加的比萨配料;但如果使用字典,就不仅可在其中包含配料列表,还可包含其他有关比萨的描述。

 # 存储所点比萨的信息
 # 在这个字典中,一个键是'crust' ,与之相关联的值是字符串'thick' ;
 #下一个键是'toppings',与之相关联的值是一个列表,其中存储了顾客要求添加的所有配料。
pizza = {
      'crust': 'thick',
      'toppings': ['mushrooms', 'extra cheese'],
      }

# 准备描述所点的比萨
print("You ordered a " + pizza['crust'] + "-crust pizza " +
      "with the following toppings:")
# 为打印配料,我们编写了一个for 循环
for topping in pizza['toppings']:
    print("\t" + topping)

输出
You ordered a thick-crust pizza with the following toppings:
mushrooms
extra cheese


每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。

favorite_languages = {
    'jen': ['python', 'ruby'],
    'sarah': ['c'],
    'edward': ['ruby', 'go'],
    'phil': ['python', 'haskell'],
    }

在遍历字典的主循环中,使用一个for 循环来遍历每个人喜欢的语言列表

for key, values in favorite_languages.items():
   print( key.title() )
   for language in values:
       print("\t" + language.title())

为进一步改进这个程序,可在遍历字典的for 循环开头添加一条if 语句,通过查看len(values) 的值来确定当前的被调查者喜欢的语言是否有多种。

字典中嵌套字典

先上代码

users = {
    'aeinstein': {
        'first': 'albert',
        'last': 'einstein',
        'location': 'princeton',
        },
    'mcurie': {
        'first': 'marie',
        'last': 'curie',
        'location': 'paris',
        },
    }
#变量user_info 包含用户信息字典,而该字典包含三个键:'first' 、'last' 和'location' 
for username, user_info in users.items():  #遍历字典users 
    print("\nUsername: " + username)         #将用户名打印出来。
    full_name = user_info['first'] + " " + user_info['last']   #访问内部的字典
    location = user_info['location']
    print("\tFull name: " + full_name.title())
    print("\tLocation: " + location.title())

这里定义了一个名为users 的字典,其中包含两个键:用户名’aeinstein’ 和’mcurie’ ;与每个键相关联的值都是一个字典,其中包含用户的名、姓和居住地。

遍历字典users 时,n依次将每个键存储在变量username 中,并依次将与当前键相关联的字典存储在变量user_info 中。
变量user_info 包含用户信息字典,而该字典包含三个键:‘first’ 、‘last’ 和’location’
【注意】每位用户的字典的结构可以不相同!!倘若表示每位用户的字典都包含不同的键,for 循环内部的代码将更复杂。

6. 用户输入input与while循环

用户输入input()

函数input() 让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中,以方便你使用。

如何处理文本和数字输入,
使用函数input() 时,Python将用户输入解读为字符串。
要想变成数值,应先转换。

>>> age = input("How old are you? ")
How old are you? 23
>>> age = int(age)
>>> age > 18
True

while 循环

多种控制while循环流程的方式:设置活动标志、使用break 语句以及使用continue 语句;
continue示例

current_number = 0
while current_number < 10:
    current_number += 1
    if current_number % 2 == 0:        
        continue
    
    print(current_number)

'''
if 语句检查current_number 与2的求模运算结果。如果结果为0(意味着current_number 可被2整除),就执行continue 语句,让Python忽略余下的代码,并返回
到循环的开头。
'''

输出
1
3
5
7
9
如何使用while 循环在列表之间移动元素,以及如何从列表中删除所有包含特定值的元素;

结合使用while 循环和字典。

创建一个调查程序,其中的循环每次执行时都提示输入被调查者的名字和回答。我们将收集的数据存储在一个字典中,以
便将回答同被调查者关联起来:
一段示例

responses = {}
 # 设置一个标志,指出调查是否继续
polling_active = True
while polling_active:
     # 提示输入被调查者的名字和回答
    name = input("\nWhat is your name? ")
    response = input("Which mountain would you like to climb someday? ")
    # 将答卷存储在字典中
    responses[name] = response
      # 看看是否还有人要参与调查
    repeat = input("Would you like to let another person respond? (yes/ no) ")
    if repeat == 'no':
          polling_active = False
  # 调查结束,显示结果
print("\n--- Poll Results ---")
for name, response in responses.items():
     print(name + " would like to climb " + response + ".")

输出
What is your name? lzj
Which mountain would you like to climb someday? huangshan
Would you like to let another person respond? (yes/ no) y

What is your name? linjie
Which mountain would you like to climb someday? huashan
Would you like to let another person respond? (yes/ no) n

What is your name? lzy
Which mountain would you like to climb someday? songshan
Would you like to let another person respond? (yes/ no) no

— Poll Results —
lzj would like to climb huangshan.
linjie would like to climb huashan.
lzy would like to climb songshan.
先定义了一个空字典(responses ),并设置了一个标志(polling_active ),用于指出调查是否继续。只要polling_active 为True ,Python就运行while 循环中的代码。

7.函数

传递参数

参数传递时除了一般的传递方法还有一个关键字实参的传递办法
关键字实参 是传递给函数的“名称—值”对。你直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆。
此时无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。
举个栗子吧

def describe_pet(animal_type, pet_name):
    """显示宠物的信息"""
    print("\nI have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(animal_type='hamster', pet_name='harry')

默认值
编写函数时,可给每个形参指定默认值,如果调用时没有给形参提供实参,Python将会使用默认值。

def describe_pet(pet_name, animal_type='dog'):
    """显示宠物的信息"""
    print("\nI have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name.title() + ".")
    
describe_pet(pet_name='willie')
describe_pet('AMMY',animal_type='cat')

输出

I have a dog.
My dog’s name is Willie.

I have a cat.
My cat’s name is Ammy.


8. 类

继承

class Car():
    """一次模拟汽车的简单尝试"""
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
    def get_descriptive_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()
    def read_odometer(self):
        print("This car has " + str(self.odometer_reading) + " miles on it.")
    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back an odometer!")
    def increment_odometer(self, miles):
        self.odometer_reading += miles
class ElectricCar(Car):
    """电动汽车的独特之处"""
    def __init__(self, make, model, year):
        """初始化父类的属性"""
        super().__init__(make, model, year)
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())

输出
2016 Tesla Model S

导入类

car.py

"""一个可用于表示汽车的类"""
class Car():
    """一次模拟汽车的简单尝试"""
    def __init__(self, make, model, year):
        """初始化描述汽车的属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
    def get_descriptive_name(self):
    --snip---

my_car.py

from car import Car
my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23
my_new_car.read_odometer()

import 语句让Python打开模块car ,并导入其中的Car 类。这样我们就可以使用Car 类了

要导入模块中的每个类,可使用下面的语法:
from module_name import *

参考资料


参考资料:
Python编程:从入门到实践
[美] Eric Matthes
译者:袁国忠

补充:一些函数

利用loc、iloc提取行数据
loc函数:通过行索引 “Index” 中的具体值来取行数据(如取"Index"为"A"的行)

iloc函数:通过行号来取行数据(如取第二行的数据)

import numpy as np
import pandas as pd
#创建一个Dataframe
data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))

```python
In[1]: data
Out[1]: 
    A   B   C   D
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15
 
#取索引为'a'的行
In[2]: data.loc['a']
Out[2]:
A    0
B    1
C    2
D    3
 
#取第一行数据,索引为'a'的行就是第一行,所以结果相同
In[3]: data.iloc[0]
Out[3]:
A    0
B    1
C    2
D    3








  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用数学库中的函数来计算勾股定理。比如,可以使用math模块中的sqrt函数来计算平方根。以下是一个使用勾股定理计算直角三角形斜边长度的示例代码: ``` from math import * a = float(input("请输入斜边1的长度:")) b = float(input("请输入斜边2的长度:")) c = sqrt(a*a + b*b) print("斜边长为:", c) ``` 在这个例子中,用户需要输入直角三角形的两个直角边的长度,然后通过勾股定理计算出斜边的长度,并将结果输出。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python 基础](https://blog.csdn.net/weixin_34268310/article/details/85888761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python入门学习随(二)(勾股定理、球体积、利率、移位和进制转换、数字求和)](https://blog.csdn.net/small_red_cap/article/details/102773406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值