python练习

字典

1.边输入边构成字典

dict={}
while True :
    name=input("请输入名字:")
    score=input('请输入分数:')
    if name :
        dict[name]=score
    else :
        break
print(dict)
2.字典可以无限极嵌套

cities={
    '北京':{
        '朝阳':['国贸','CBD','天阶','我爱我家','链接地产'],
        '海淀':['圆明园','苏州街','中关村','北京大学'],
        '昌平':['沙河','南口','小汤山',],
        '怀柔':['桃花','梅花','大山'],
        '密云':['密云A','密云B','密云C']
    },
    '河北':{
        '石家庄':['石家庄A','石家庄B','石家庄C','石家庄D','石家庄E'],
        '张家口':['张家口A','张家口B','张家口C'],
        '承德':['承德A','承德B','承德C','承德D']
    }
}
for i in cities['北京']:
    print(i)
#循环内容可以为二级索引
for i in cities['北京']['海淀']:
    print(i)
3.利用for in rang将两个列表转换为字典


```python
#列表的定义方法,是字符的话方括号里面需要加上引号
#里面是数字只需要用方括号括起来
list_1 = ['a', 'b', 'c']
list_2 = [1, 2, 3]
#用什么要先创建什么
dict_1 = {}
for i in range(len(list_1)):
#字典的索引可以不是数字
 dict_1[list_1[i]] = list_2[i]
print(type(dict_1))
print(dict_1)
4.遍历字典
```python
print("=======欢迎进入狗狗年龄对比系统========")
control = "N"
while control=="N":
    try:
        age = int(input("请输入您家狗的年龄:"))
        #print(" ")
        age = float(age)
        if age < 0:
            print("您在逗我?")
        elif age == 1:
            print("相当于人类14岁")
            #break
        elif age == 2:
            print("相当于人类22岁")
            #break
        else:
            human = 22 + (age - 2)*5
            print("相当于人类:",human)
            #break
   #except BaseException(这个是ValueError的父类所以调用父类即可,ValueError包括于Baseexcept中的一种,所以就不用写出BaseException中的每一种错误。):
    except ValueError:
        print("输入不合法,请输入有效年龄")
    print("")
    control = input("退出(Y/N)?")
    print("")
###退出提示
input("点击 enter 键退出")

'''
1.第一个点,while的判断条件是N,而不是True,这就可以控制当前循环完成后,或抛出异常后可以选择是否继续
2.age = int(input("请输入您家狗的年龄:"))的位置,如果放在try的外面便会报错。
'''
#对比前面加上了就算输入没错也可以选择是否继续输入,而且我认为finally用的好,通过finally便不用在try里每个语句后面加上control = input("退出(Y/N)?")
print("=======欢迎进入狗狗年龄对比系统========")
control = "N"
while control=="N":
    try:
        age = int(input("请输入您家狗的年龄:"))
        #print(" ")
        age = float(age)
        if age < 0:
            print("您在逗我?")
        elif age == 1:
            print("相当于人类14岁")
            #break
        elif age == 2:
            print("相当于人类22岁")
            #break
        else:
            human = 22 + (age - 2)*5
            print("相当于人类:",human)
            #break
   #except BaseException(这个是ValueError的父类所以调用父类即可,ValueError包括于Baseexcept中的一种,所以就不用写出BaseException中的每一种错误。):
    except ValueError:
        print("输入不合法,请输入有效年龄")
        control = input("退出(Y/N)?")
        print("")

    finally:
        control = input("退出(Y/N)?")
def fib_loop_while(max):
    a, b = 0, 1
    while max > 0:
        a, b = b, a + b
        max -= 1
        yield a

#for 的循环可以是一个函数
for i in fib_loop_while(10):
    print(i)
def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   for var in vartuple:
      print (var)
   return
 
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )

列表推导式

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。

这里我们将列表中每个数值乘三,获得一个新的列表:

>>> vec = [2, 4, 6]
>>> [3*x for x in vec]
[6, 12, 18]
>>> [[x, x**2] for x in vec]
[[2, 4], [4, 16], [6, 36]]

#在for循环前对操作对象调用函数
>>> freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
>>> [weapon.strip() for weapon in freshfruit]
['banana', 'loganberry', 'passion fruit']
#for前面的是最终输出的形式,比如 [x*y for x in vec1 for y in vec2],这里没有print的字样但是输出的是x*y
#我们可以用 if 子句作为过滤器:
>>> [3*x for x in vec if x > 3]
[12, 18]
>>> [3*x for x in vec if x < 2]

>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [x+y for x in vec1 for y in vec2]
[6, 5, -7, 8, 7, -5, 10, 9, -3]
>>> [vec1[i]*vec2[i] for i in range(len(vec1))]
[8, 12, -54]

>>> [str(round(355/113, i)) for i in range(1, 6)]
['3.1', '3.14', '3.142', '3.1416', '3.14159']
#相当于输入5次str(round(355/113, i))。

#以下实例将3X4的矩阵列表转换为4X3列表:
>>> matrix = [
...     [1, 2, 3, 4],
...     [5, 6, 7, 8],
...     [9, 10, 11, 12],
... ]
 >>> [[row[i] for row in matrix] for i in range(4)]
 >>>  [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
是一个整体,不然row[i] for row in matrix里的i是哪来的…

这个List Comprehension相当于一个嵌套循环,外层循环变量是i,内层循环变量是row。

把列表的外层循环改为普通for循环的话,等价于:

temp_list = []
for i in range(4):
    temp_list.append([row[i] for row in matrix])
而
for i in range(4):
    [row[i] for row in matrix]
    #每次输出每行中的一个元素
    print(row[i])
输出为
9
10
11
12
这里就是因为print的输出是按照竖着来输出的所以这里就自动地行变成列。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值