码迷,mamicode.com
首页 > 编程语言 > 详细

python学习_15

时间:2018-10-08 15:52:56      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:怎么   ret   ×××   字符串   spl   return   first   port   lin   

序列直接赋值给变量

>> a,b =(1,2)
>> a,b
(1, 2)
>> a
1
>> b
2

>> a,b = [3,4]
>> a
3
>> b
4

>> a,b = "xy"
>> a
‘x‘
>> b
‘y‘
>> a,b = [2,2,3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

习题1::将字符串:"k:1|k1:2|k2:3|k3:4",处理成 python 字典:{‘k‘:‘1‘, ‘k1‘:‘2‘, ‘k2‘:‘3‘,‘k3‘:‘4‘ }

s = "k:1|k1:2|k2:3|k3:4"
result_dict  = {}

s_list = s.split("|")

for v in s_list:
   key = v.split(":")[0]
   value = v.split(":")[1]
   result_dict[key] = value

print(result_dict )

习题2:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断
方式1:

分析:
1 x 在10×××面,x是某个数,不知道是谁
2 (x+100)开方 = y y整数,
3 (x++100+168)开方 = z z 整数
4 开方:math.sqrt
5 怎么判断z 和y 是否整数?
y2是整数且是x++100
z
2是整数且是x++100+168

import math
result = []
for i in range(100000):
    x = math.sqrt(i+100)
    y = math.sqrt(i+100+168)
    if (int(x)**2 == i+100)   and (int(y)**2 == i+100+168):
        #print(i)
        result.append(i)

print(result)

习题3:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

1 考英语
s = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
2 输入一个字符,判断是否在s的所有单词的
第一个字母是否存在
3 有,第一种只有唯一首字母匹配到了,
第二种2个单词的首字母匹配到了。
遍历:判断首字母相同的单词有几个,存个list
如果list长度是1,说明没有重复的天,直接输出
如果List长度是2,说明有2个。再让用户输入一个字母
判断在list的所有单词的第二个是否相等,相等就可以输出
结果了。

def get_week_day():
    s = ["Monday","Tuesday","Wednesday",
            "Thursday","Friday","Saturday","Sunday"]
    result = []
    first_letter = input("请输入第一个字母: ")
    for day in s:
        if day[0] == first_letter.upper():
            result.append(day)
    if len(result) == 0:
        print("你输入的不正确")

    if len(result) == 1:
        return result[0]

    if len(result) == 2:
        second_letter = input("请输入第二个字母: ")
        for day in s:
            if day[1] == second_letter.lower():
                return day

if __name__ == "__main__":
    print(get_week_day())

习题4:{‘k‘:?‘1‘,?‘k1‘:?‘2‘,?‘k2‘:?‘3‘,?‘k3‘:?‘4‘}拼回:"k:1|k1:2|k2:3|k3:4"
字典的key取出来,然后用sort或者sorted均可
算法:
1 先把字典的key排序
2 然后按照排序后的key,依次取value,然后使用:,
把key和value做拼接,然后把拼接后的结果存到一个列表里面
3 使用join,使用|将列表的所有元素做拼接

方式1:

遍历字典的key,把key、”:”、value 拼接成字符串,然后加入列表,最后列表转换为字符串

d = {‘k‘: ‘1‘, ‘k1‘: ‘2‘, ‘k2‘: ‘3‘, ‘k3‘: ‘4‘}
result = []
for key in sorted(d.keys()):
    s= key+":"+d[key]
    result.append(s)

print (result)
print ("|".join(result))

方式2:

遍历字典的key、value把key\value加入一个临时列表,临时列表用”:”拼接成字符串,加入列表,最后把列表转为为字符串

d = {‘k‘:‘1‘,‘k1‘:‘2‘,‘k2‘:‘3‘,‘k3‘:‘4‘}

result = []
for k,v in d.items():
    lst = []
    lst.append(k)
    lst.append(v)
    item = ":".join(lst)
    result.append(item)
print("|".join(result))
d = {‘k‘:‘1‘,‘k1‘:‘2‘,‘k2‘:‘3‘,‘k3‘:‘4‘}

result = ""
for k,v in d.items():
    result += (k + ":" + v + "|")
print(result[:len(result)-1])

Input()输入内容不包含回车

习题5:生成一个新列表,-1的左边都是小于它的,右边都是大于它的。a= [-1,2,3,-3,0,-5,5]

a = [-1,2,3,-3,0,-5,5]
base = a[0]
list1=[]
list2=[]
for num in a:
    if num < base:
        list1.append(num)
    else:
        list2.append(num)
print(list1 + [base] + list2)

倒序取序列元素

>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>> l[-3:-1]
[7, 8]

>> l[-1:-3:-1]
[9, 8]

>> l[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>> for i in range(len(l)-1,-1,-1):
... print(i)
...
9
8
7
6
5
4
3
2
1
0

>> l[::-2]
[9, 7, 5, 3, 1]

>> for i in range(len(l)-1,-1,-2):
... print(i)
...
9
7
5
3
1

奇数坐标 数

>> for i in range(1,len(a),2):
... print(a[i])
...
1
3
5
7
9

偶数坐标 数

>> for i in range(0,len(a),2):
... print(a[i])
...
0
2
4
6
8

习题6:在列表[100, 2, 3, -3, 0, -5, 5]中实现每个元素+1,需要在原列表实现

a = [100, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for i in range(len(a)):
    a[i] += 1
print(a)

>>> [x+1 for x in a]
[101, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> list(map(lambda x:x+1,a))
[101, 2, 3, 4, 5, 6, 7, 8, 9, 10]

习题7:?在列表中插入一个新的元素[100,?2,?3,?-3,?0,?-5,?5]在0的前面插入一个元素10000

方式1:

算法:
1?遍历,判断是否0,不是0,把元素插入新列表
2?是0,则把带插入元素插入新列表,然后再插入
0


result?=?[]
a?=?[100,?2,?3,?-3,?0,?-5,?5]
target_num?=10000
for?i?in?a:
????if?i?==?0:
????????result.append(target_num)
????????result.append(i)
????else:
????????result.append(i)

print?(result)

方式2:

按索引遍历列表,找到0的位置,插入1000,结束遍历

l = [100,2,3,-3,0,-5,5]

for i in range(len(l)):
    if l[i] == 0:
        l.insert(i,1000)
        break
print(l)

习题8:?在列表中的第三个位置插入10000

算法:使用切片把第三个位置前的取到使用切片把位置三后的取到把10000存到一个列表,三个列表相加


result = []
a = [100, 2, 3, -3, 0, -5, 5]
target_num =10000
result=a[:2]+[target_num]+a[2:]
print(result)

python学习_15

标签:怎么   ret   ×××   字符串   spl   return   first   port   lin   

原文地址:http://blog.51cto.com/13496943/2295858

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!