博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python练习题
阅读量:5133 次
发布时间:2019-06-13

本文共 68710 字,大约阅读时间需要 229 分钟。

0、猜数字

#-*-encoding:UTF-8-*-

import random

guess_number=random.randint(0,9)

loop_times=0

while loop_times<5:

    print loop_times

    try:

        user_input_number=int(raw_input("请输入一个整数,范围0-99:".decode('utf-8').encode('gbk')))

    except Exception,e:

        print u"非法输入数据,必须输入整数"

        continue

    if user_input_number<guess_number:

        print u"猜小了"

    elif user_input_number>guess_number:

        print u"猜大了"

    else:

        print u"猜中了,您中奖了"

    loop_times +=1

    if loop_times==5:

        #下面这行会报错,因为这里会掉用系统默认字符集(ascii)进行先解码然后再编码到gbk,ascii不能解码中文

        #print "您猜了5次了,没有机会了,正确数字是:".encode('gbk'), guess_number

        #下面这行可以,用utf-8来解码就可以

        #print "您猜了5次了,没有机会了,正确数字是:".decode('utf-8').encode('gbk'), guess_number

        #下面这行会报错,因为不能对中文的uinicode进行解码

        #print u"您猜了5次了,没有机会了,正确数字是:".decode('utf-8').encode('gbk'), guess_number

        #下面这行可以,有中文的unicode直接编码成gbk,可以正常显示

        #print u"您猜了5次了,没有机会了,正确数字是:".encode('gbk'), guess_number

        break

 

1、用ascii码进行字符串的输出

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

'''

letters=""

for i in range(26):

    letters=letters+chr(90-i)

print letters

 

'''

'''

letters = ""

for i in range(0,26,2):

    letters += chr(i+65)

print letters

 

'''

'''

#translate from abcd...-->fghi.., z->e

letters=raw_input("input the letters:")

#print letters

#print len(letters)

transletter = ""

for i in letters:

    if (ord(i)+5) < 122:

        print"ord(i)+5 <122"  

        transletter+=chr(ord(i)+5)

    else:

        print"ord(i)+5>=122"

        transletter+=chr(ord(i)+5-26)

 

print ("jiamihou",transletter)

 

untransletter =""

for i in transletter:

    if (ord(i))<102:

        untransletter += chr(ord(i)-5+26)

    else:

        untransletter+= chr(ord(i)-5)

print (("解码后").decode("utf-8" ), untransletter)

 

2、算出一个十进制数对应的二进制数:

例题:

如果算出一个十进制数对应的二进制数:

中文算法:

  1. 数字不断与2整除
  2. 记录玉树,将余数存在一个list中
  3. 商继续除以2取整,知道最后商为0
  4. 拼接list反序输出二进制数

自己写的:

decimalism = input("input number:")

binary=''

 

while (decimalism != 0):

    if decimalism %2 ==0:

        print "decimalism %2 =0"

        binary += "0"

        print "binary:", binary

        decimalism /=2

        print "decimalism: ", decimalism

    else:

        print "decimalism  %2 =1"

        binary += "1"

        print binary

        decimalism /=2

        print "decimalism: ", decimalism

 

print binary[::-1]

 

优化之后:

decimalism = input("input number:")

binary=""

while (decimalism != 0):

        binary += str(decimalism %2)

        decimalism /=2

print "binary:",binary[::-1]

 

吴老写的:

number = int(raw_input("input a number:"))

bin_list=[]

while 1:

    quient=number/2

    bin_list.append(str(number%2))

    number=quient

    if number==0:

        break

print "result:","".join(bin_list[::-1])

---------------------------------------------------------------------------------------------------------------------------------

>>> a =1

>>> isinstance(a,int)

True

>>> b=1L

>>> isinstance(b,long)

True

>>> c=1+1j

>>> isinstance(c,complex)

True

>>> d = u"a"

>>> isinstance(d,unicode)

True

>>> e="abc"

>>> isinstance(e,str)

True

>>> f =[1]

>>> isinstance(f,list)

True

>>> g=(1,2)

>>> isinstance(g,tuple)

True

>>> h ={1:2}

>>> isinstance(h,dict)

True

>>> instance(P,type)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'instance' is not defined

>>> isinstance(P,type)

True

 

Print 5%2 =1

Import math

dir(math)

Math.sqrt(4) = 2

 

 

3、对文件的内容进行编码转换

#-*-coding:UTF-8-*-

fp1 = open('d:\\testfile.txt', 'r')#手工创建文件为ANSI编码保存(gbk)

info1 = fp1.read()

#已知是GBK编码,解码成Unicode

tmp = info1.decode('GBK')

 

fp2 = open('d:\\testfile2.txt','w')

#编码成UFT-8编码的str

info2= tmp.encode('UTF-8')

fp2.write(info2)#写入uft8字符,并进行保存

fp2.close() #文件会变成utf-8编码保存

 

test1是ANSI (GBK)编码

test2是UTF编码

 

#-*_ coding:UTF-8-*-

s= "byte string"

print type(s)

#str to unicode

u = s.decode()

u=s.decode()

print type(u)

#unicode to str

backToBytes=u.encode()

print type(backToBytes)

#获取系统编码示例:

#-*-coding:UTF-8-*-

import sys

print sys.getdefaultencoding()

 

 

#更改系统编码代码示例:

#-*-coding:UTF-8-*-

import sys

reload(sys)

sys.setdefaultencoding('UTF-8')

 

 

#-*- coding: UTF-8 -*-

import sys

reload(sys) #去掉此行和下行,则程序出错

sys.setdefaultencoding('UTF-8')

print sys.getdefaultencoding()

print type(u"我")

print type(u"我".encode('utf-8'))

print type(u"我".decode('utf-8'))

#”我”是str类型,encode前,python自动用默认编码进行decode为unicode类型,默认为ascii,则无法decode

print “我”.encode(‘utf-8’).decode(‘utf-8’) #会调用默认的编码进行decode在进行encode(‘utf-8’)

注意:这里在“我”之前没有用u,所以“我”是字节型字符串,而且后边没有先decode(),不会直接编码为uft-8(需要unicode才可以),所以系统默认调用decode(utf-8)来解码为unicode,然后再编码为后边的

utf-8(encode(‘utf-8’).。。。),如果没有制定系统默认编码为uft-8,则系统默认的编码为ascii,这里系统自动调用decode(ascii)则会报错,因为ascii不会解码中文.

 

http://www.cnblogs.com/guosq/p/6378639.html

4、猜数字

大了提示猜小点,小了提示猜大点,5次为限,猜中了提示中奖了,然后推出

#-*-encoding:UTF-8-*-

a = 98

 

for i in range(5):

    print i

    input_number=input("please guess the number:")

    if input_number >a:

        print("please guess smaller")

    elif input_number<a:

        print("please guess bigger")

    else:

        print("you got it, please get your award!!")

        exit()

    if i == 4:

        print("you have tried 5 times,the number is:", a)

 

#-*-encoding:UTF-8-*-

'''

import sys

reload(sys)

print sys.getdefaultencoding()

sys.setdefaultencoding('utf-8')

print sys.getdefaultencoding()

'''

a = 98

 

for i in range(5):

    print i

    input_number=input(u"请输入一个数:".encode('gbk'))

    if input_number >a:

        print(u"请猜小一点!")

    elif input_number<a:

        print(u"请猜大一点1")

    else:

        print(u"猜中了,您中大奖了!!")

        exit()

    if i == 4:

        print u"您试了5次了,没有机会了,数字是:".encode('gbk'), a

  1. 生成随机数(有一定的范围),存在一个变量里
  2. 循环5次并控制循环推出条件
  3. 每次循环中读入一个整数,(raw_input,必须要int转类型):输入类型的判断,是否是整数或者小数
  4. 比较的3种:大于(提示:大了,第五次的时候打印随机数),小于(小了,第五次的时候打印随机数)和等于(猜中了,提示中奖了)
  5. 打印一句话,执行完毕:print  ’done’
 

 

#-*-encoding:UTF-8-*-

import random

guess_number=random.randint(0,9)

loop_times=0

while loop_times<5:

    print loop_times

    try:

        user_input_number=int(raw_input("请输入一个整数,范围0-99:".decode('utf-8').encode('gbk')))

    except Exception,e:

        print u"非法输入数据,必须输入整数"

        continue

    if user_input_number<guess_number:

        print u"猜小了"

    elif user_input_number>guess_number:

        print u"猜大了"

    else:

        print u"猜中了,您中奖了"

    loop_times +=1

    if loop_times==5:

        #下面这行会报错,因为这里会掉用系统默认字符集(ascii)进行先解码然后再编码到gbk,ascii不能解码中文

        #print "您猜了5次了,没有机会了,正确数字是:".encode('gbk'), guess_number

        #下面这行可以,用utf-8来解码就可以

        #print "您猜了5次了,没有机会了,正确数字是:".decode('utf-8').encode('gbk'), guess_number

        #下面这行会报错,因为不能对中文的uinicode进行解码

        #print u"您猜了5次了,没有机会了,正确数字是:".decode('utf-8').encode('gbk'), guess_number

        #下面这行可以,有中文的unicode直接编码成gbk,可以正常显示

        #print u"您猜了5次了,没有机会了,正确数字是:".encode('gbk'), guess_number

 

#-*-encoding:UTF-8-*-

import random

cishu=5

b=random.randrange(5)

while cishu>0:

    try:

        #下面这句因为有u,使程序进入死循环

        a=raw_input(u"输入数字:".decode("utf-8").encode("gbk"))#应该把u去掉

    except Exception,e:

        print u"请输入数字"

        continue

 

 

 

5、输入1-127的ascii码并输出对应字符

#-*-encoding:UTF-8-*-

ascii = int(raw_input("input ascii code(1-127):"))

print "the transformed character is:", chr(ascii)

 

6、输入a,b,c,d4个整数,计算a+b-c*d的结果

#-*-encoding:UTF-8-*-

a=int(raw_input("input number a:"))

b=int(raw_input("input number b:"))

c=int(raw_input("input number c:"))

d=int(raw_input("input number d:"))

 

print "result of calculation of a+b-c*d:", a+b-c*d

答案:

>>> a=1

>>> b=2
>>> c=3
>>> d=4
>>> print eval("a+b-c*d")
-9
>>> print a+b-c*d
-9

7、计算一周有多少分钟、多少秒钟

#-*-encoding:UTF-8-*-

minutes=7*24*60

seconds=minutes * 60

print u"一周的分钟数是:",minutes

print u"一周的秒数是:", seconds

 

答案:

>>> print "一周有%s分钟" %str(1*7*24*60)

一周有10080分钟

>>> print "一周有%s秒" %str(1*7*24*60*3600)

一周有36288000秒

 

'*'*100

 

8、3个人在餐厅吃饭,想分摊饭费。总共花费35.27美元,他们还想给15%的小费。每个人该怎么付钱,编程实现

#-*-encoding:UTF-8-*-

expense = 35.27

charge= expense* 0.15

moneyForEach = (expense + charge)/3

print u"3个人平均费用是", moneyForEach,u"美元"

答案:

>>> print "每人付费%s$" %str(round(35.37*1.15/3,2))

每人付费13.56$

 

9.计算一个12.5m X 16.7m的矩形房间的面积和周长

#-*-encoding:UTF-8-*-

a = 12.5

b = 16.7

print u"长方形的长是:", a,"m"

print u"长方形的宽是:", b,"m"

area = a*b

perimeter = 2*(a+b)

 

print u"该长方形的面积是:", area,u"㎡"#此处注意,是中文字符

print u"该长方形的周长是:", perimeter,"m"

答案:

>>> print "面积%s平方米" %str(length*width)

面积208.75平方米

8.怎么得到9 / 2的小数结果

#-*-encoding:UTF-8-*-

a=float(9)

b=float(2)

print u"9/2的小数结果是:", a/b

 

答案:

>>> print 9/2.0

4.5

9.python计算中7 * 7 *7 * 7,可以有多少种写法

#-*-encoding:UTF-8-*-

import math

print "methords to calculate 7*7*7*7:"

print "math.pow(7,4):", math.pow(7,4)

print "7**4:",7**4

print "7*7*7*7:",7*7*7*7

print "7**2*7**2:",7**2*7**2

 

10.写程序将温度从华氏温度转换为摄氏温度。转换公式为C = 5 / 9*(F - 32)

#-*-encoding:UTF-8-*-

'''

import sys

reload(sys)

sys.setdefaultencoding('UTF-8')

'''

fahrenheit = float(raw_input(u"请输入华氏温度:".encode('GBK')))

centigrade = float(5)/float(9)*float(fahrenheit-32)

print u"转换为摄氏温度:", round(centigrade,2)

 

 

答案:

>>> print "摄氏温度:%s" %str(round(5/9.0*(a-32),1))

摄氏温度:-1.1

 

9.一家商场在降价促销。如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣,如果购买金额大于100元会给20%折扣。编写一程序,询问购买价格,再显示出折扣(10%或20%)和最终价格。

 

答案:

please input your price:101

>>> if  customer_price >=100:

...     print "discount rate is %s" %0.2

...     print "you should pay %s" %(customer_price*0.8)

... elif customer_price>=50 and customer_price<100:

...     print "discount rate is %s" %0.1

...     print "you should pay %s" %(customer_price*0.9)

... else:

...     print "no discount"

...     print "you should pay %s" %(customer_price)

...

discount rate is 0.2

you should pay 80.8

10、判断一个数n能否同时被3和5整除

 

 

答案:

a=100

>>> if a %3==0 and a%5==0:

...     print "Yes"

... else:

...     print "No!"

...

No!

11、求1 + 2 + 3 +….+100

 

#-*-encoding:UTF-8-*-

sum=0

for i in range(1,101):

    #print "i=:",i,"sum=:",sum

    sum+=i

print "sum of 1+2+...100 is:",sum

 

 

 

 

 

12、交换两个变量的值

#-*-encoding:UTF-8-*-

variate1=raw_input("input variate1:")

variate2=raw_input("input variate2:")

temp = variate1

variate1=variate2

variate2=temp

print "exchange value of variate1 and variate2: "

print "variate1=:", variate1

print "variate2=:",variate2

 

 

 

13、一个足球队在寻找年龄在10到12岁的小女孩(包括10岁和12岁)加入。

编写一个程序,询问用户的性别(m表示男性,f表示女性)和年龄,然后显示一条消息指出这个人是否可以加入球队,询问10次后,输出满足条件的总人数。

 

#-*-encoding:UTF-8-*-

number=0

 

while number <=10:

    sex=0

    print "number:", number

    while sex not in (1,2):

        sex=int(raw_input("please select 1 (female) or 2 ( male):"))

    age=int(raw_input("your age is:"))

    print "sex:",sex,"age:",age

    number+=1

 

    if age >=10 and age<=12 and sex==1:

        print "you can join in the football team!"

    else:

        print "sorry, you can not join in football team!"

 

 

14、长途旅行中,刚到一个加油站,距下一个加油站还有200km,而且以后每个加油站之间距离都是200km。

编写一个程序确定是不是需要在这里加油,还是可以等到接下来的第几个加油站再加油。 程序询问以下几个问题: 1)你车的油箱多大,单位升 2)目前油箱还剩多少油,按百分比算,比如一半就是0.5 3)你车每升油可以走多远(km) 提示: 油箱中包含5升的缓冲油,以防油表不准。

 

#-*-encoding:UTF-8-*-

'''

算法:

1、邮箱尺寸x剩余油量百分比-5L=剩余油量L

2、剩余油量x每升油走的距离=还能走的距离km

3、还能走的距离跟200km比较,如果小于等于200km就在需要在这里加油

4、还能走的距离跟200km比较,如果大于200km,小于400,可以等到下一个加油站加油

5、还能走的距离跟200km比较,如果大于200km而且能整除的话,整除结果为n,可以在接下来的第n个加油站加油

'''

fuel_capacity = float(raw_input("input your fuel box capacity (L):"))

current_fuel_left_ratio =float(raw_input("input your fuel left ratio now(e.g.0.5):"))

distance_per_litre=float(raw_input("how far the car can go per L (km):"))

 

distance_can_move=(current_fuel_left_ratio*fuel_capacity-5)*distance_per_litre

print "distance_can_move:",distance_can_move,"km"

 

if distance_can_move <=200:

    print "you should add fuel in this petrol station, you can go %s km with the fuel left now "%distance_can_move

elif distance_can_move >200 and distance_can_move <400:

    print "you can add fuel in next petrol station, you can go %s km with the fuel left now "%distance_can_move

else:

print "you can add fuel in next %s station, you can go %s km with the fuel left now"%(int(distance_can_move/200),distance_can_move)

 

 

 

 

15、现有面包、热狗、番茄酱、芥末酱以及洋葱,数字显示有多少种订购组合,其中面包必订,0不订,1订,比如10000,表示只订购面包

#-*-encoding:UTF-8-*-

num=1

a=u"面包"

b=u"热狗"

c=u"番茄酱"

d=u"芥末酱"

e=u"洋葱"

#print a,b,c,d,e

list = [a,b,c,d,e]

#print ",".join(list)

'''

list1=[]

for i in range(5):

    list1.append(list[i])

print ",".join(list1)

'''

 

print "there are %s combinations"%(2**5-2**4)

for i in range(2**4,2**5):

    list1 = []

    print "combination%s:"%num

    num+=1

    #print bin(i)[2:]

    combination = bin(i)[2:]

    print "combination:",combination

    for i in range(5):

        if combination[i]=="1":

           #print "combination[%s]=1"%i

            list1.append(list[i])

    print "combination:",",".join(list1)

#print "\n"

 

运行结果:

 

 

 

 

 

16、基于上题:给出每种食物的卡路里(自定义),再计算出每种组合总共的卡路里

#-*-encoding:UTF-8-*-

num=1

a=u"面包"

b=u"热狗"

c=u"番茄酱"

d=u"芥末酱"

e=u"洋葱"

list = [a,b,c,d,e]

calory=[20,30,10,30,25]

 

print "there are %s combinations"%(2**5-2**4)

for i in range(2**4,2**5):

    list1 = []

    list2 = []

    print "combination%s:"%num

    num+=1

    #print bin(i)[2:]

    combination = bin(i)[2:]

    print "combination:",combination

    for i in range(5):

        if combination[i]=="1":

           #print "combination[%s]=1"%i

            list1.append(list[i])

            list2.append(calory[i])

 

    print "combination:",",".join(list1)

    print "total calory is:",sum(list2)

 

 

 

17、输入5个名字,排序后输出

#-*-encoding:UTF-8-*-

'''

name4="abc"

name2="bcd"

name5="csf"

name1="daed"

name3="erfd"

 

'''

name1=raw_input("input the name1:")

name2=raw_input("input the name2:")

name3=raw_input("input the name3:")

name4=raw_input("input the name4:")

name5=raw_input("input the name5:")

 

list = [name1,name2,name3,name4,name5]

print "name list is:",",".join(list)

 

for i in range(len(list)):

    for j in range(i):

        if list[j] > list[i]:

            list[j], list[i] = list[i], list[j]

print "sort name list is:",",".join(list)

 

18、实现一个简单的单词本

功能:

可以添加单词和词义,当所添加的单词已存在,让用户知道;

可以查找单词,当查找的单词不存在时,让用户知道;

可以删除单词,当删除的单词不存在时,让用户知道;

以上功能可以无限制操作,直到用户输入bye退出程序。

#-*-encoding:UTF-8-*-

 

'''

1.创建空字典,循环提示用户选择操作1:新增单词和词义,2:查找单词。3:删除单词4,对出

2.判断选择,如果是1:新增,提示输入单词,

    判断单词是否存在字典中,如果存在,提示用户已经存在了,如果不存在,继续提示输入词义,

    提示成功消息,显示单词和词义

3.如果是2查找单词,提示用户输入单词,

    判断单词是否在字典中,如果没有,提示用户没有

    如果有,显示该单词和词义,

4.如果是3删除单词,提示用户输入要删除的单词,

    判断单词是否在字典中,如果没有提示用户没有该单词

    如果有,删除该单词和词义,提示用户删除成功

5。如何是4退出,退出循环

'''

word_book={"dog":"a kind of pet"}

operation = True

while operation:

    choice = int(raw_input("\nSelect operation:\n 1: Insert word and meaning \n 2: Search word\n 3: Delete word\n 4: Exit\n "))

    if choice ==1:#新增单词

        add_word=raw_input("Input the word: ")

        if word_book.has_key(add_word):#如果要新增的单词存在

            print "\nword book already have word: %s "%add_word#提示单词已经存在

        else:#单词不存在

            add_word_meaning=raw_input("Input the meaning of word %s: " %add_word)#提示输入单词词义

            word_book[add_word]=add_word_meaning#打印该新增单词的内容

            print "\nYou have added the word successfully, %s:" %add_word, word_book[add_word]#提示新增成功,显示单词和词义

        print "word_book:",word_book#打印该新增单词的全部内容

    if choice ==2:#查询单词

        search_word=raw_input("Input the word you want to search: ")#提示输入要查询的单词

        if word_book.has_key(search_word):#单词存在

            print"\nThe meaning of the word %s: %s"%(search_word,word_book[search_word])#打印单词和词义

        else:#单词不存在

            print"\nSorry the word you search does not exist!"#提示用户该单词不存在

        print "word_book:",word_book#打印该新增单词的全部内容

    if choice ==3:#删除单词

        del_word=raw_input("Input the word you want to delete: ")#提示输入要删除的单词

        if not(word_book.has_key(del_word)):#要删除的单词不存在

            print"\nSorry,the word you want to delete does not exist!"

        else:#单词存在

            del word_book[del_word]#执行删除动作,删除该单词

            print"Deleted the word %s successfully!"%del_word

        print "word_book:",word_book#打印该新增单词的全部内容

    if choice ==4:#退出

        print "bye..."

        exit()

 

 

 

 

0、猜数字

#-*-encoding:UTF-8-*-

import random

guess_number=random.randint(0,9)

loop_times=0

while loop_times<5:

    print loop_times

    try:

        user_input_number=int(raw_input("请输入一个整数,范围0-99:".decode('utf-8').encode('gbk')))

    except Exception,e:

        print u"非法输入数据,必须输入整数"

        continue

    if user_input_number<guess_number:

        print u"猜小了"

    elif user_input_number>guess_number:

        print u"猜大了"

    else:

        print u"猜中了,您中奖了"

    loop_times +=1

    if loop_times==5:

        #下面这行会报错,因为这里会掉用系统默认字符集(ascii)进行先解码然后再编码到gbk,ascii不能解码中文

        #print "您猜了5次了,没有机会了,正确数字是:".encode('gbk'), guess_number

        #下面这行可以,用utf-8来解码就可以

        #print "您猜了5次了,没有机会了,正确数字是:".decode('utf-8').encode('gbk'), guess_number

        #下面这行会报错,因为不能对中文的uinicode进行解码

        #print u"您猜了5次了,没有机会了,正确数字是:".decode('utf-8').encode('gbk'), guess_number

        #下面这行可以,有中文的unicode直接编码成gbk,可以正常显示

        #print u"您猜了5次了,没有机会了,正确数字是:".encode('gbk'), guess_number

        break

 

1、用ascii码进行字符串的输出

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

'''

letters=""

for i in range(26):

    letters=letters+chr(90-i)

print letters

 

'''

'''

letters = ""

for i in range(0,26,2):

    letters += chr(i+65)

print letters

 

'''

'''

#translate from abcd...-->fghi.., z->e

letters=raw_input("input the letters:")

#print letters

#print len(letters)

transletter = ""

for i in letters:

    if (ord(i)+5) < 122:

        print"ord(i)+5 <122"  

        transletter+=chr(ord(i)+5)

    else:

        print"ord(i)+5>=122"

        transletter+=chr(ord(i)+5-26)

 

print ("jiamihou",transletter)

 

untransletter =""

for i in transletter:

    if (ord(i))<102:

        untransletter += chr(ord(i)-5+26)

    else:

        untransletter+= chr(ord(i)-5)

print (("解码后").decode("utf-8" ), untransletter)

 

2、算出一个十进制数对应的二进制数:

例题:

如果算出一个十进制数对应的二进制数:

中文算法:

  1. 数字不断与2整除
  2. 记录玉树,将余数存在一个list中
  3. 商继续除以2取整,知道最后商为0
  4. 拼接list反序输出二进制数

自己写的:

decimalism = input("input number:")

binary=''

 

while (decimalism != 0):

    if decimalism %2 ==0:

        print "decimalism %2 =0"

        binary += "0"

        print "binary:", binary

        decimalism /=2

        print "decimalism: ", decimalism

    else:

        print "decimalism  %2 =1"

        binary += "1"

        print binary

        decimalism /=2

        print "decimalism: ", decimalism

 

print binary[::-1]

 

优化之后:

decimalism = input("input number:")

binary=""

while (decimalism != 0):

        binary += str(decimalism %2)

        decimalism /=2

print "binary:",binary[::-1]

 

吴老写的:

number = int(raw_input("input a number:"))

bin_list=[]

while 1:

    quient=number/2

    bin_list.append(str(number%2))

    number=quient

    if number==0:

        break

print "result:","".join(bin_list[::-1])

---------------------------------------------------------------------------------------------------------------------------------

>>> a =1

>>> isinstance(a,int)

True

>>> b=1L

>>> isinstance(b,long)

True

>>> c=1+1j

>>> isinstance(c,complex)

True

>>> d = u"a"

>>> isinstance(d,unicode)

True

>>> e="abc"

>>> isinstance(e,str)

True

>>> f =[1]

>>> isinstance(f,list)

True

>>> g=(1,2)

>>> isinstance(g,tuple)

True

>>> h ={1:2}

>>> isinstance(h,dict)

True

>>> instance(P,type)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'instance' is not defined

>>> isinstance(P,type)

True

 

Print 5%2 =1

Import math

dir(math)

Math.sqrt(4) = 2

 

 

3、对文件的内容进行编码转换

#-*-coding:UTF-8-*-

fp1 = open('d:\\testfile.txt', 'r')#手工创建文件为ANSI编码保存(gbk)

info1 = fp1.read()

#已知是GBK编码,解码成Unicode

tmp = info1.decode('GBK')

 

fp2 = open('d:\\testfile2.txt','w')

#编码成UFT-8编码的str

info2= tmp.encode('UTF-8')

fp2.write(info2)#写入uft8字符,并进行保存

fp2.close() #文件会变成utf-8编码保存

 

test1是ANSI (GBK)编码

test2是UTF编码

 

#-*_ coding:UTF-8-*-

s= "byte string"

print type(s)

#str to unicode

u = s.decode()

u=s.decode()

print type(u)

#unicode to str

backToBytes=u.encode()

print type(backToBytes)

#获取系统编码示例:

#-*-coding:UTF-8-*-

import sys

print sys.getdefaultencoding()

 

 

#更改系统编码代码示例:

#-*-coding:UTF-8-*-

import sys

reload(sys)

sys.setdefaultencoding('UTF-8')

 

 

#-*- coding: UTF-8 -*-

import sys

reload(sys) #去掉此行和下行,则程序出错

sys.setdefaultencoding('UTF-8')

print sys.getdefaultencoding()

print type(u"我")

print type(u"我".encode('utf-8'))

print type(u"我".decode('utf-8'))

#”我”是str类型,encode前,python自动用默认编码进行decode为unicode类型,默认为ascii,则无法decode

print “我”.encode(‘utf-8’).decode(‘utf-8’) #会调用默认的编码进行decode在进行encode(‘utf-8’)

注意:这里在“我”之前没有用u,所以“我”是字节型字符串,而且后边没有先decode(),不会直接编码为uft-8(需要unicode才可以),所以系统默认调用decode(utf-8)来解码为unicode,然后再编码为后边的

utf-8(encode(‘utf-8’).。。。),如果没有制定系统默认编码为uft-8,则系统默认的编码为ascii,这里系统自动调用decode(ascii)则会报错,因为ascii不会解码中文.

 

http://www.cnblogs.com/guosq/p/6378639.html

4、猜数字

大了提示猜小点,小了提示猜大点,5次为限,猜中了提示中奖了,然后推出

#-*-encoding:UTF-8-*-

a = 98

 

for i in range(5):

    print i

    input_number=input("please guess the number:")

    if input_number >a:

        print("please guess smaller")

    elif input_number<a:

        print("please guess bigger")

    else:

        print("you got it, please get your award!!")

        exit()

    if i == 4:

        print("you have tried 5 times,the number is:", a)

 

#-*-encoding:UTF-8-*-

'''

import sys

reload(sys)

print sys.getdefaultencoding()

sys.setdefaultencoding('utf-8')

print sys.getdefaultencoding()

'''

a = 98

 

for i in range(5):

    print i

    input_number=input(u"请输入一个数:".encode('gbk'))

    if input_number >a:

        print(u"请猜小一点!")

    elif input_number<a:

        print(u"请猜大一点1")

    else:

        print(u"猜中了,您中大奖了!!")

        exit()

    if i == 4:

        print u"您试了5次了,没有机会了,数字是:".encode('gbk'), a

  1. 生成随机数(有一定的范围),存在一个变量里
  2. 循环5次并控制循环推出条件
  3. 每次循环中读入一个整数,(raw_input,必须要int转类型):输入类型的判断,是否是整数或者小数
  4. 比较的3种:大于(提示:大了,第五次的时候打印随机数),小于(小了,第五次的时候打印随机数)和等于(猜中了,提示中奖了)
  5. 打印一句话,执行完毕:print  ’done’
 

 

#-*-encoding:UTF-8-*-

import random

guess_number=random.randint(0,9)

loop_times=0

while loop_times<5:

    print loop_times

    try:

        user_input_number=int(raw_input("请输入一个整数,范围0-99:".decode('utf-8').encode('gbk')))

    except Exception,e:

        print u"非法输入数据,必须输入整数"

        continue

    if user_input_number<guess_number:

        print u"猜小了"

    elif user_input_number>guess_number:

        print u"猜大了"

    else:

        print u"猜中了,您中奖了"

    loop_times +=1

    if loop_times==5:

        #下面这行会报错,因为这里会掉用系统默认字符集(ascii)进行先解码然后再编码到gbk,ascii不能解码中文

        #print "您猜了5次了,没有机会了,正确数字是:".encode('gbk'), guess_number

        #下面这行可以,用utf-8来解码就可以

        #print "您猜了5次了,没有机会了,正确数字是:".decode('utf-8').encode('gbk'), guess_number

        #下面这行会报错,因为不能对中文的uinicode进行解码

        #print u"您猜了5次了,没有机会了,正确数字是:".decode('utf-8').encode('gbk'), guess_number

        #下面这行可以,有中文的unicode直接编码成gbk,可以正常显示

        #print u"您猜了5次了,没有机会了,正确数字是:".encode('gbk'), guess_number

 

#-*-encoding:UTF-8-*-

import random

cishu=5

b=random.randrange(5)

while cishu>0:

    try:

        #下面这句因为有u,使程序进入死循环

        a=raw_input(u"输入数字:".decode("utf-8").encode("gbk"))#应该把u去掉

    except Exception,e:

        print u"请输入数字"

        continue

 

 

 

5、输入1-127的ascii码并输出对应字符

#-*-encoding:UTF-8-*-

ascii = int(raw_input("input ascii code(1-127):"))

print "the transformed character is:", chr(ascii)

 

6、输入a,b,c,d4个整数,计算a+b-c*d的结果

#-*-encoding:UTF-8-*-

a=int(raw_input("input number a:"))

b=int(raw_input("input number b:"))

c=int(raw_input("input number c:"))

d=int(raw_input("input number d:"))

 

print "result of calculation of a+b-c*d:", a+b-c*d

答案:

>>> a=1

>>> b=2
>>> c=3
>>> d=4
>>> print eval("a+b-c*d")
-9
>>> print a+b-c*d
-9

7、计算一周有多少分钟、多少秒钟

#-*-encoding:UTF-8-*-

minutes=7*24*60

seconds=minutes * 60

print u"一周的分钟数是:",minutes

print u"一周的秒数是:", seconds

 

答案:

>>> print "一周有%s分钟" %str(1*7*24*60)

一周有10080分钟

>>> print "一周有%s秒" %str(1*7*24*60*3600)

一周有36288000秒

 

'*'*100

 

8、3个人在餐厅吃饭,想分摊饭费。总共花费35.27美元,他们还想给15%的小费。每个人该怎么付钱,编程实现

#-*-encoding:UTF-8-*-

expense = 35.27

charge= expense* 0.15

moneyForEach = (expense + charge)/3

print u"3个人平均费用是", moneyForEach,u"美元"

答案:

>>> print "每人付费%s$" %str(round(35.37*1.15/3,2))

每人付费13.56$

 

9.计算一个12.5m X 16.7m的矩形房间的面积和周长

#-*-encoding:UTF-8-*-

a = 12.5

b = 16.7

print u"长方形的长是:", a,"m"

print u"长方形的宽是:", b,"m"

area = a*b

perimeter = 2*(a+b)

 

print u"该长方形的面积是:", area,u"㎡"#此处注意,是中文字符

print u"该长方形的周长是:", perimeter,"m"

答案:

>>> print "面积%s平方米" %str(length*width)

面积208.75平方米

8.怎么得到9 / 2的小数结果

#-*-encoding:UTF-8-*-

a=float(9)

b=float(2)

print u"9/2的小数结果是:", a/b

 

答案:

>>> print 9/2.0

4.5

9.python计算中7 * 7 *7 * 7,可以有多少种写法

#-*-encoding:UTF-8-*-

import math

print "methords to calculate 7*7*7*7:"

print "math.pow(7,4):", math.pow(7,4)

print "7**4:",7**4

print "7*7*7*7:",7*7*7*7

print "7**2*7**2:",7**2*7**2

 

10.写程序将温度从华氏温度转换为摄氏温度。转换公式为C = 5 / 9*(F - 32)

#-*-encoding:UTF-8-*-

'''

import sys

reload(sys)

sys.setdefaultencoding('UTF-8')

'''

fahrenheit = float(raw_input(u"请输入华氏温度:".encode('GBK')))

centigrade = float(5)/float(9)*float(fahrenheit-32)

print u"转换为摄氏温度:", round(centigrade,2)

 

 

答案:

>>> print "摄氏温度:%s" %str(round(5/9.0*(a-32),1))

摄氏温度:-1.1

 

9.一家商场在降价促销。如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣,如果购买金额大于100元会给20%折扣。编写一程序,询问购买价格,再显示出折扣(10%或20%)和最终价格。

 

答案:

please input your price:101

>>> if  customer_price >=100:

...     print "discount rate is %s" %0.2

...     print "you should pay %s" %(customer_price*0.8)

... elif customer_price>=50 and customer_price<100:

...     print "discount rate is %s" %0.1

...     print "you should pay %s" %(customer_price*0.9)

... else:

...     print "no discount"

...     print "you should pay %s" %(customer_price)

...

discount rate is 0.2

you should pay 80.8

10、判断一个数n能否同时被3和5整除

 

 

答案:

a=100

>>> if a %3==0 and a%5==0:

...     print "Yes"

... else:

...     print "No!"

...

No!

11、求1 + 2 + 3 +….+100

 

#-*-encoding:UTF-8-*-

sum=0

for i in range(1,101):

    #print "i=:",i,"sum=:",sum

    sum+=i

print "sum of 1+2+...100 is:",sum

 

 

 

 

高斯算法:(n+1)n/2

答案:

# coding=utf-8

count =0
for i in range(1,101):
    count+=i
print count

 

 

12、交换两个变量的值

#-*-encoding:UTF-8-*-

variate1=raw_input("input variate1:")

variate2=raw_input("input variate2:")

temp = variate1

variate1=variate2

variate2=temp

print "exchange value of variate1 and variate2: "

print "variate1=:", variate1

print "variate2=:",variate2

 

 

答案:

# coding=utf-8

a=1
b=2
a,b = b,a
print a,b

# coding=utf-8

a=1
b=2
tmp = a
a=b
b=tmp
print a,b

 

 

 

13、一个足球队在寻找年龄在10到12岁的小女孩(包括10岁和12岁)加入。

编写一个程序,询问用户的性别(m表示男性,f表示女性)和年龄,然后显示一条消息指出这个人是否可以加入球队,询问10次后,输出满足条件的总人数。

 

#-*-encoding:UTF-8-*-

number=0

 

 

while number <=10:

    sex=0

    print "number:", number

    while sex not in (1,2):

        sex=int(raw_input("please select 1 (female) or 2 ( male):"))

    age=int(raw_input("your age is:"))

    print "sex:",sex,"age:",age

    number+=1

 

    if age >=10 and age<=12 and sex==1:

        print "you can join in the football team!"

    else:

        print "sorry, you can not join in football team!"

答案:

# coding=utf-8

count =0
for i in range(10):
    student_info = raw_input("please input sex and age,sep by ',':")
    sex = student_info.split(',')[0]
    age = student_info.split(',')[1]
    if sex.lower() == "f" and float(age) >=10 and float(age)<=12:
        count+=1
print u"满足条件的孩子有 %s 个" %count

 

14、长途旅行中,刚到一个加油站,距下一个加油站还有200km,而且以后每个加油站之间距离都是200km。

编写一个程序确定是不是需要在这里加油,还是可以等到接下来的第几个加油站再加油。 程序询问以下几个问题: 1)你车的油箱多大,单位升 2)目前油箱还剩多少油,按百分比算,比如一半就是0.5 3)你车每升油可以走多远(km) 提示: 油箱中包含5升的缓冲油,以防油表不准。

 

#-*-encoding:UTF-8-*-

'''

算法:

1、邮箱尺寸x剩余油量百分比-5L=剩余油量L

2、剩余油量x每升油走的距离=还能走的距离km

3、还能走的距离跟200km比较,如果小于等于200km就在需要在这里加油

4、还能走的距离跟200km比较,如果大于200km,小于400,可以等到下一个加油站加油

5、还能走的距离跟200km比较,如果大于200km而且能整除的话,整除结果为n,可以在接下来的第n个加油站加油

'''

fuel_capacity = float(raw_input("input your fuel box capacity (L):"))

current_fuel_left_ratio =float(raw_input("input your fuel left ratio now(e.g.0.5):"))

distance_per_litre=float(raw_input("how far the car can go per L (km):"))

 

distance_can_move=(current_fuel_left_ratio*fuel_capacity-5)*distance_per_litre

print "distance_can_move:",distance_can_move,"km"

 

if distance_can_move <=200:

    print "you should add fuel in this petrol station, you can go %s km with the fuel left now "%distance_can_move

elif distance_can_move >200 and distance_can_move <400:

    print "you can add fuel in next petrol station, you can go %s km with the fuel left now "%distance_can_move

else:

print "you can add fuel in next %s station, you can go %s km with the fuel left now"%(int(distance_can_move/200),distance_can_move)

 

 

答案:

# coding=utf-8

car_gas_volume = 200
car_current_gas_volume = 150
car_100_km_gas_consume = 10
gas_station_gap_distance=200
print u"请在第 %s 个加油站加油" %int((car_current_gas_volume-5)/car_100_km_gas_consume*100/gas_station_gap_distance)

 

 

15、现有面包、热狗、番茄酱、芥末酱以及洋葱,数字显示有多少种订购组合,其中面包必订,0不订,1订,比如10000,表示只订购面包

#-*-encoding:UTF-8-*-

num=1

a=u"面包"

b=u"热狗"

c=u"番茄酱"

d=u"芥末酱"

e=u"洋葱"

#print a,b,c,d,e

list = [a,b,c,d,e]

#print ",".join(list)

'''

list1=[]

for i in range(5):

    list1.append(list[i])

print ",".join(list1)

'''

 

print "there are %s combinations"%(2**5-2**4)

for i in range(2**4,2**5):

    list1 = []

    print "combination%s:"%num

    num+=1

    #print bin(i)[2:]

    combination = bin(i)[2:]

    print "combination:",combination

    for i in range(5):

        if combination[i]=="1":

           #print "combination[%s]=1"%i

            list1.append(list[i])

    print "combination:",",".join(list1)

#print "\n"

 

运行结果:

 

 

 

答案:

# coding=utf-8

bread=["b1"]
hotdog=["h1","h0"]
tomato_jam=["t1","t0"]
jiemo=["j1","j0"]
onion=["o1","o0"]
result =[]
for b in bread:
    for h in hotdog:
        for t in tomato_jam:
            for j in jiemo:
                for o in onion:
                    result.append(b+" "+h+" "+t+" "+j+" "+o) 
print len(result)
print result
for i in result:
    print i

 

 

16、基于上题:给出每种食物的卡路里(自定义),再计算出每种组合总共的卡路里

#-*-encoding:UTF-8-*-

num=1

a=u"面包"

b=u"热狗"

c=u"番茄酱"

d=u"芥末酱"

e=u"洋葱"

list = [a,b,c,d,e]

calory=[20,30,10,30,25]

 

print "there are %s combinations"%(2**5-2**4)

for i in range(2**4,2**5):

    list1 = []

    list2 = []

    print "combination%s:"%num

    num+=1

    #print bin(i)[2:]

    combination = bin(i)[2:]

    print "combination:",combination

    for i in range(5):

        if combination[i]=="1":

           #print "combination[%s]=1"%i

            list1.append(list[i])

            list2.append(calory[i])

 

    print "combination:",",".join(list1)

    print "total calory is:",sum(list2)

 

 

答案:

# coding=utf-8

bread=["b1"]
hotdog=["h1","h0"]
tomato_jam=["t1","t0"]
jiemo=["j1","j0"]
onion=["o1","o0"]
result =[]
bread_calori=1
hotdog_calori=2
tomato_jam_calori=3
jiemo_calori=4
onion_calori=5
for b in bread:
    for h in hotdog:
        for t in tomato_jam:
            for j in jiemo:
                for o in onion:
                    result.append(b+" "+h+" "+t+" "+j+" "+o) 
print len(result)
print result
for i in result:
    calori_count=0
    for x in i.split():
        if x == "b1":
            calori_count+=bread_calori
        if x =="h1":
            calori_count+=hotdog_calori
        if x == "j1":
            calori_count+=jiemo_calori
        if x =="o1":
            calori_count+=onion_calori 
        if x =="t1":
            calori_count+=tomato_jam_calori 
    print i,u"组合的卡路里总和是:",calori_count,u"千卡"

 

 

同学的答案:

#coding=utf-8

 

##定义每种食物的热量

bread_cal=800

hotdog_cal=1500

tomato_sauce_cal=800

mustcard_source_cal=1000

onion_cal=30

##把各个食物的热量存入列表中

L=[("面包",bread_cal),("热狗",hotdog_cal),("番茄酱",tomato_sauce_cal),("芥末酱",mustcard_source_cal),("洋葱",onion_cal)]

cal=0

##循环食物的每种组合,其中面包必选,因此第一位永远是1

for i in range(0b0,0b10000):

    j=str('1'+bin(i)[2:].zfill(4))

 

##计算每种组合的热量

    for m in range(len(j)):

        if j[m]=='1':

            cal+=L[m][1]

##打印出每种组合,及对应的热量

    print j,cal

    cal=0

17、输入5个名字,排序后输出

#-*-encoding:UTF-8-*-

'''

name4="abc"

name2="bcd"

name5="csf"

name1="daed"

name3="erfd"

 

'''

name1=raw_input("input the name1:")

name2=raw_input("input the name2:")

name3=raw_input("input the name3:")

name4=raw_input("input the name4:")

name5=raw_input("input the name5:")

 

list = [name1,name2,name3,name4,name5]

print "name list is:",",".join(list)

 

for i in range(len(list)):

    for j in range(i):

        if list[j] > list[i]:

            list[j], list[i] = list[i], list[j]

print "sort name list is:",",".join(list)

 

 

答案:

# coding=utf-8

name_list=[]
for i in range(5):
    name_list.append(raw_input("input a name:").strip())
name_list.sort()
print name_list

 

 

18、实现一个简单的单词本

功能:

可以添加单词和词义,当所添加的单词已存在,让用户知道;

可以查找单词,当查找的单词不存在时,让用户知道;

可以删除单词,当删除的单词不存在时,让用户知道;

以上功能可以无限制操作,直到用户输入bye退出程序。

#-*-encoding:UTF-8-*-

 

'''

1.创建空字典,循环提示用户选择操作1:新增单词和词义,2:查找单词。3:删除单词4,对出

2.判断选择,如果是1:新增,提示输入单词,

    判断单词是否存在字典中,如果存在,提示用户已经存在了,如果不存在,继续提示输入词义,

    提示成功消息,显示单词和词义

3.如果是2查找单词,提示用户输入单词,

    判断单词是否在字典中,如果没有,提示用户没有

    如果有,显示该单词和词义,

4.如果是3删除单词,提示用户输入要删除的单词,

    判断单词是否在字典中,如果没有提示用户没有该单词

    如果有,删除该单词和词义,提示用户删除成功

5。如何是4退出,退出循环

'''

word_book={"dog":"a kind of pet"}

operation = True

while operation:

    choice = int(raw_input("\nSelect operation:\n 1: Insert word and meaning \n 2: Search word\n 3: Delete word\n 4: Exit\n "))

    if choice ==1:#新增单词

        add_word=raw_input("Input the word: ")

        if word_book.has_key(add_word):#如果要新增的单词存在

            print "\nword book already have word: %s "%add_word#提示单词已经存在

        else:#单词不存在

            add_word_meaning=raw_input("Input the meaning of word %s: " %add_word)#提示输入单词词义

            word_book[add_word]=add_word_meaning#打印该新增单词的内容

            print "\nYou have added the word successfully, %s:" %add_word, word_book[add_word]#提示新增成功,显示单词和词义

        print "word_book:",word_book#打印该新增单词的全部内容

    if choice ==2:#查询单词

        search_word=raw_input("Input the word you want to search: ")#提示输入要查询的单词

        if word_book.has_key(search_word):#单词存在

            print"\nThe meaning of the word %s: %s"%(search_word,word_book[search_word])#打印单词和词义

        else:#单词不存在

            print"\nSorry the word you search does not exist!"#提示用户该单词不存在

        print "word_book:",word_book#打印该新增单词的全部内容

    if choice ==3:#删除单词

        del_word=raw_input("Input the word you want to delete: ")#提示输入要删除的单词

        if not(word_book.has_key(del_word)):#要删除的单词不存在

            print"\nSorry,the word you want to delete does not exist!"

        else:#单词存在

            del word_book[del_word]#执行删除动作,删除该单词

            print"Deleted the word %s successfully!"%del_word

        print "word_book:",word_book#打印该新增单词的全部内容

    if choice ==4:#退出

        print "bye..."

        exit()

 

 

 

 

 

 

答案:

# coding=utf-8

word_dict = {}
help = u'''
1:add a word
2:find a word meaning
3: delete a word
input bye to exit
'''
print help
while 1:
    command = raw_input("please input your command:")
    if command ==str(1):
        word = raw_input("please input your word:")
        word_meaning = raw_input("please input your word meaning:")
        if word_dict.has_key(word):
            continue
        word_dict[word] =word_meaning
    if command ==str(2):
        word = raw_input("please input your word to find:")
        if word_dict.has_key(word):
            print word_dict[word]
            continue
        print "the word is not found!"
    if command == str(3):
        word = raw_input("please input your word to delete:")
        if word_dict.has_key(word):
            del word_dict[word]
            continue
            print "delete is done!"
        print "word to delete is not found!"
    if command == "bye":
        break

修改:

# coding=utf-8

word_dict = {}
help = u'''
1:add a word
2:find a word meaning
3: delete a word
input bye to exit
'''
print help
while 1:
    command = raw_input("please input your command:")
    if command ==str(1):
        word = raw_input("please input your word:")
        word_meaning = raw_input("please input your word meaning:")
        if word_dict.has_key(word):
            continue
        word_dict[word] =word_meaning
    if command ==str(2):
        word = raw_input("please input your word to find:")
        if word_dict.has_key(word):
            print word_dict[word]
            continue
        print "the word is not found!"
    if command == str(3):
        word = raw_input("please input your word to delete:")
        if word_dict.has_key(word):
            del word_dict[word]
            print "delete is done!"
            continue
        print "word to delete is not found!"
    if command == "bye":
        break

 

 

19、输入一个正整数,输出其阶乘结果

#coding=utf-8

'''

算法:

1-输入一个数字,如果不是数字提示重新输入

2-声明一个变量存阶乘的结果,初始值=1

3-while循环,条件是输入的数字大于0

4-循环体内用阶乘结果*输入的数,

5-然后输入的数-1,每次执行循序的时候,都是阶乘的结果*上次的input number减去1,就是5*4*3*1*1,到1的时候,下次循序就不执行了

'''

#捕获异常

try:

    input_number = int(raw_input("input a number for factorial:"))

except:

    print "you should input a number!"

factorial_result =1

while input_number >0:

    print "input_number:",input_number

    factorial_result*=(input_number)

    print "factorial_result:",factorial_result

    input_number-=1

 

print "factorial_result is %s" %factorial_result

 

 

答案:

# coding=utf-8

result=1
for i in range(1,11):
     result*=i
print result

 

20、计算存款利息

4种方法可选:活期,年利率为r1;

一年期定息,年利率为r2;

存两次半年期定期,年利率为r3 两年期定息,年利率为r4

现有本金1000元,请分别计算出一年后按4种方法所得到的本息和。

提示:本息= 本金+ 本金* 年利率* 存款期

 

#coding=utf-8

'''

算法:

声明变量存本金1000元

活期的本息=本金+本金*r1*一年

一年期定息的本息=本金+本金*r2*一年

存两次半年期定息=本金+本金*r3*0.5*2

存两年期定息:本息=本金+本金*r4*0.5

'''

r1=0.03

r2=0.04

r3=0.035

r4=0.045

principal = 1000

print u"本金:%s 元" %principal

print u"利率为:"

print u"活期利率: %s" %r1

print u"一年期定息利率:%s" %r2

print u"存两次半年期定息利率:%s" %r3

print u"存两年期定息利率:%s" %r4

 

print u"一年后活期的本息为:%s 元" %(principal+principal*r1*1)

print u"一年后一年期定息的本息为:%s 元" %(principal+principal*r2*1)

print u"一年后存按两次半年期定息的本息为:%s 元" % (principal+principal*r3*0.5*2)

print u"一年后按存两年期定息的本息为:%s 元" %(principal + principal*r4*0.5)

 

 

答案:

# coding=utf-8

r1=0.0035
r2=0.035
r3=0.0155
r4=0.04
deposit = 1000.0
print u"一年期活期总收益:%f" %(deposit*(1+r1))
print u"一年期定期总收益:%s"  %(deposit*(1+r2))
print u"半年期定期总收益:%s"  %(deposit*(0.5+r3)+deposit*(0.5+r3))
print u"2年期定期总收益:%s" %(deposit*(1+r4))

 

 

21、输入3个数字,以逗号隔开,输出其中最大的数

>>> a=input("three number seperated by ',' :")

three number seperated by ',' :1,2,3

>>> a

(1, 2, 3)

>>> max(a)

答案:

num_list=raw_input("please input three numbers,sep by ',':")

num_list=num_list.split(",")
print max(num_list)

 

#coding=utf-8

num_list=raw_input("please input three numbers,sep by ',':")

num_list=num_list.split(",")

 

a=num_list[0]

b=num_list[1]

c=num_list[2]

 

max=0

 

if a>b:

    max=a

 

if max<c:

    max=c

 

print c

 

降序排序:

#coding=utf-8

num_list=raw_input("please input three numbers,sep by ',':")

num_list=num_list.split(",")

 

a=num_list[0]

b=num_list[1]

c=num_list[2]

 

max=0

 

if a>b:

    max=a

 

if max<c:

    max=c

 

print c

 

num_list.remove(max)

 

if num_list[0]> num_list[1]:

    print max,  num_list[0], num_list[1]

else:

print max,  num_list[1], num_list[0]

 

 

22、输入一个年份,输出是否为闰年是闰年的条件:

能被4整数但不能被100整除,或者能被400整除的年份都是闰年。

#coding=utf-8

year = int(raw_input("input the year:"))

if (year%4==0) and (year%100 != 0):

   print " %s is leap year" %year

elif year%400 ==0:

   print "%s is leap year" %year

else:

   print "%s is not leap year" %year

答案:

year = int(raw_input("input a year to judge a leap year:"))

if (year%4==0 and year %100 !=0) or year %400==0:
    print "%s is a leap year!" %year
else:
    print "%s is not a leap year!" %year

 

23、求两个正整数m和n的最大公约数

答案:

# coding=utf-8

a=20
b=10
if a<b:
    c=a
else:
    c=b
result =0
for i in range(1,c+1):
    if a%i ==0  and b%i ==0:
        result=i
print u"%s 和 %s 的最大公约数:%s" %(a,b,result)        

 

优化:

# coding=utf-8

a=20
b=10
if a<b:
    c=a
else:
    c=b
result =0
for i in range(c,0,-1):
    if a%i ==0  and b%i ==0:
        result=i
        break
print u"%s 和 %s 的最大公约数:%s" %(a,b,result)        

 

 

 

统计字符串中包含字母a的个数:

 

s="I am a boy!"

count =0

for i in s:

    if "a" in i:

        count +=1

print count

 

 

 

 

 

练习:读入一个学生的考试得分,

读入一个考试得分,判断这个分数是哪个等级,并输出。

等级:》=90 优 ,>=80且小于90 良,》=70 且小于80,中,》=60且<70及格 

《60 不及格

算法:1 读入一个成绩  2 使用if elif 还有else来判断成绩的等级,并输出

#-*-encoding:UTF-8-*-

score = float(raw_input("输入分数:"))

if score >=90:

    print "优"

elif score >= 80:

    print "良"

elif score >=70 and score <80:

    print "中"

elif score >=60 and score < 70:

    print "及格"

else:

    print "不及格"

 

字符串是小数的情况需要转换一下,

例如下面这样

int(float('2.1'))

 

打印10以内的偶数:

>>> for i in range(0,10,2):

...     print(i)

...

0

2

4

6

8

练习:使用while 循环三次,读入三个单词,并将三个单词拼成一个句子后输出

result = " "

looptime =3

while looptime >=1:

    result = result + raw_input("输入一个单词:")+" "

    looptime -= 1

print result

练习:生成一个1到50的大字符串每个数字之间有个空格

#-*-encoding:UTF-8-*-

string=[]

for i in range(1,51):

    string.append(str(i))

print string

 

print " ".join(string)

 

吴老师:

result = ""

for i in range(1,51,1):
    if i == 50:
        result = result+str(i)
    result = result+str(i)+" "
print result

 

练习:使用while统计的句子中有几个数字

吴老师:

content = raw_input("please input a sentence:")

result = 0

index =0

while index<=len(content)-1:

    if content[index] in "0123456789":

         result+=1

    index+=1

print result

练习:将一个列表元素倒序存在一个新列表中

吴老师:

可以用reverse,或者切片[::-1]

第三种:

list1=[1,2,3,4,5]

list2=[]

for i in list1:

   list2.insert(0,i)

print list2

 

可以遍历的序列:列表,元祖、字符串

 

Python来自蟒蛇飞行马戏命名

两门语言起步,先学python,然后java

Python出东西快,java很麻烦,啰唆

AI,人工智能很多都是用python做的

CPython的类型:默认是用C写的

Jpython:可以直接调用java代码

Ironpython:是.net,或者C#相关的

 

>>> import os

>>> os.sep

'\\'

>>> os.linesep

'\r\n'

>>> os.getcwd() #获取当前路劲

'c:\\Python27\\Scripts'

 

Eclipse+pydev

Pycharm

Sublime

Notepad++

写字板、

 

练习:加密

aàe

bàf

zàd

 

#-*-encoding:UTF-8-*-

inputnumber=raw_input("input the number:")

encodenubmer=""

for i in inputnumber:

    #print ord(i)

    if ord(i)+4  > 122:

        encodenubmer+=chr(ord(i)+4-26)

    elif ord(i)+4  > 90 and ord(i)+4 <97:

        encodenubmer+=chr(ord(i)+4-26)

    else:

        encodenubmer+=chr(ord(i)+4)

print encodenubmer

 

 

 

 

 

 

 

吴老:

letters = raw_input("please input some letter to encode:")

encoded_letters=""
for s in letters:
    if (s >= 'a' and s<"w")or(s >= 'A' and s <"W"):
        encoded_letters+=chr(ord(s)+4)
    elif s>="w" and s<="z":
        encoded_letters+=chr(ord(s)-ord("w")+97)
    elif s>="W" and s<="Z":
        encoded_letters+=chr(ord(s)-ord("W")+65)
    else:
        print "some content is not letter!please try again!"
        continue
print encoded_letters

练习:转换二进制到十进制

#-*-encoding:UTF-8-*-

binary="11111110"

length =len(binary)

result = 0

for i in range(length):

result += int(binary[i])*pow(2, length-i-1)

    print i,int(binary[i]),pow(2,length-i-1)

print result

 

 

吴老:

bianary_number 11100--->第一个数字*2的0次方+第二个数字*2的一次方+第三个数字*2的2次方

循环5次:

第一次:index=0,bianary_number[index]=1,1*2**4,result=16

第二次:index=1,bianary_number[index]=1,1*2**3,result=16+8

第三次:index=2,bianary_number[index]=1,1*2**2,result=16+8+4

第四次:index=3,bianary_number[index]=0,0*2**1,result=16+8+4

第五次:index=4,bianary_number[index]=0,0*2**0,result=16+8+4

 

 

 

bianary_number="11100"

length=len(bianary_number)  #求二进制字符串的长度

result=0  #记录10进制的计算结果

index=0   #开始读取的字符串坐标

while length >0:  #循环,如果长度变为0,则停止循环

    result +=int(bianary_number[index])*pow(2,length-1)

    print index,bianary_number[index],length-1 ,result

    length-=1

    index+=1

 

print result

 

练习:生成所有的小写字母、大写字母和大小写混合字母

#-*-encoding:UTF-8-*-

lowercase=""

for i in range(97,123):

    lowercase += chr(i)

print lowercase

 

uppercase=""

for i in range(65,91):

    uppercase += chr(i)

print uppercase

 

mixcase=""

for i in range(65,91):

    mixcase+=chr(i)+chr(i+32)

print mixcase

 

吴老:

 

 

>>> letters=""

>>> for s in range(65,65+26):

...     letters+=chr(s)+chr(s+32)

...

>>> print letters

AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz

>>> 

a=a+1,这种情况会生成一个临时变量

a+=1, 这种情况效率会高一点点

 

练习:判断一个句子中包含多少个字母:

1-       先输入句子

2-       然后确定字母letters,import string,用string.letters

3-       遍历句子,判断是否是字母,然后变量加1

4-       遍历之后输出变量

 

#-*-encoding:UTF-8-*-

import string

sentence = raw_input("input yout sentence")

letter_nbr=0

for i in sentence:

    if i in string.letters:

        letter_nbr+=1

print letter_nbr

 

 

吴老:

>>> letters=""

>>> for s in range(65,65+26):
...     letters+=chr(s)+chr(s+32)
...
>>> print letters
>>> content=raw_input("please input a sentence:")
please input a sentence:I am a boy!
>>> letter_count=0
>>> for s in content:
...     if s in letters:
...         letter_count+=1
...
>>> print letter_count

练习:生成所有的小写字母、大写字母和大小写混合字母

#-*-encoding:UTF-8-*-

lowercase=""

for i in range(97,123):

    lowercase += chr(i)

print lowercase

 

uppercase=""

for i in range(65,91):

    uppercase += chr(i)

print uppercase

 

mixcase=""

for i in range(65,91):

    mixcase+=chr(i)+chr(i+32)

print mixcase

 

吴老:

>>> letters=""

>>> for s in range(65,65+26):

...     letters+=chr(s)+chr(s+32)

...

>>> print letters

AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz

>>> 

a=a+1,这种情况会生成一个临时变量

a+=1, 这种情况效率会高一点点

 

练习:判断一个句子中包含多少个字母:

1-    先输入句子

2-    然后确定字母letters,import string, 用string.letters

3-    遍历句子,判断是否是字母,然后变量加1

4-    遍历之后输出变量

 

#-*-encoding:UTF-8-*-

import string

sentence = raw_input("input yout sentence")

letter_nbr=0

for i in sentence:

    if i in string.letters:

        letter_nbr+=1

print letter_nbr

 

 

吴老:

>>> letters=""

>>> for s in range(65,65+26):

...     letters+=chr(s)+chr(s+32)

...

>>> print letters

>>> content=raw_input("please input a sentence:")

please input a sentence:I am a boy!

>>> letter_count=0

>>> for s in content:

...     if s in letters:

...         letter_count+=1

...

>>> print letter_count

 

练习有一个长度是101的数组,存在1~100的数字,有一个是重复的,拿重复的找出来

 

#encoding=utf-8

list=range(101)

print list

list[57]=1

print list

 

for i in list:

    if list.count(i)>1:

        print i

 

 

吴老:

import random

a=range(100)

random_num = random.randint(0,99)

a.insert(random_num,random_num)

print random_num

number = [i for i in a if a.count(i)==2]

print number[0]

 

 

练习2个长度相同的list,一个里面的做字典的key,另一个做value,请写个函数实现

字典的key不能是可变元素

#encoding=utf-8

list1=range(10)

list2=list1[:]

 

def change_to_dict(a,b):

    dict={}

    for i in range(len(a)):

        dict[a[i]]=b[i]

    return dict

print change_to_dict(list1,list2)

 

 

吴老:

a=[1,"2",[3,4],(5,6),{7:8}]

b=[0,1,2,3]

d={}

for i in range(len(a)):

#判断a[i]的类型是否是不变的,字典的key不能是可变元素

    if not isinstance(a[i],(int,float,complex,long,str,unicode,tuple)):

        continue

    else:

        d[a[i]]=b[i]

 

print d

 

 

或者

a=[1,"2",[3,4],(5,6),{7:8}]

b=[0,1,2,3]

d={}

for i in range(len(a)):

    if not isinstance(a[i],(int,float,complex,long,str,unicode,tuple)):

        continue

    else:

        d[a[i]]=b[0]

        del b[0]

 

print d

 

 

1、用尽可能多的方法实现liest去重

1.用

a=[1,2,2,3,4,5,4]

b=[]

for i in a:

    if i not in b:

        b.append(i)

print b

 

 

2.用集合set去重

# coding=utf-8

a=[1,2,2,3,4,5,4]

print  list(set(a))

 

 

3.用字典的key去重

a=[1,2,2,3,4,5,4]

d={}

for i in a:

    d[i]=None

print d.keys()

 

 

4.用count

# coding=utf-8

a=[1,2,2,2,2,2,2,3,4,5,4]

for i in a:

    for j in range(a.count(i)-1):

        #print "i: %s j: %s"%(i,j)

        a.remove(i)

        #print "remove i:",i

 

print a

 

 

# coding=utf-8

a=[1,2,2,2,2,2,2,3,4,5,4]

for i in a:

    print "index[i]:",a.index(i)

    for j in range(a.count(i)-1):

        a.remove(i)

        print a

print a

 

 

这种方法不行, 因为把列表中当前下标对应的值给删了,引起下标的异常,单不确定

a=[1,2,2,2,2,2,2,3,4,5,4]

for i in a:

    if a.count(i)>1:

        a.remove(i)

print a

 

 

 

 

3、实现数学中多项式求和公式的打印

比如:a6x^6 + a5x^5 + a4x^4 + a3x^3 + a2x^2 + a1x^1 + a0

# coding=utf-8

a =[]

for i in range(6,-1,-1):

    if i == 0:

        a.append("a%s"%i)

    else:

        a.append("a%s*^%s"%(i,i))

print "+".join(a)

 

 

笨方法:

# coding=utf-8

print list(range(1,7))[::-1]

for i in list(range(1,7))[::-1]:

    print  "a"+str(i)+"*^"+str(i)+'+',

print "a0"

 

 

吴老:

吴老:

# coding=utf-8

result=[]

for i in range(6,-1,-1):

    if i == 0:

        result.append("a0")

        break

    result.append("a%sx^%s" %(i,i))

print "+".join(result)

 

 

 

4、统计名字列表中,各名字的首字母在名字列表中出现的次数

# coding=utf-8

a =['alark','philipu','carry','dererk']

d={}

for i in a:

    d[i]="".join(a).count(i[0])

print d

 

 

或者:

name_list=['foster',"janet",'jessus','david']

count_dict={}

for i in name_list:

    count=0

    for j in name_list:

        if j.count(i[0])>=1:

             count+=j.count(i[0])

    count_dict[i]=count

print count_dict

 

 

5、输入三个数,判断是否能构成三角形

能构成三角形三边关系:三边都大于零两边之和大于第三边,两边之差小于第三边

# coding=utf-8

a=int(raw_input("input number a:"))

b=int(raw_input("input number b:"))

c=int(raw_input("input number c:"))

if (a+b > c) and (a-b<c) and (a+c>b) and (a-c<b) and (b+c>a) and (b-c<a)and a>0 and b>0 and c>0:

    print u"是三角形"

else:

    print u"不是三角形"

 

 

最优解:

import math

a,b,c=input("please input three num a,b,c:")
d=min(a,b,c)
e=max(a,b,c)
if d<=0:
    print "error"
elif (a+b+c)>2*e:
    print U"能组成三角形"
else:
    print u"不能组成三角形"

 

 

6、实现字典的fromkeys方法

例如: seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq, 10)

print "New Dictionary : %s" % str(dict)

结果:

New Dictionary : {'age': 10, 'name': 10, 'sex': 10}

 

# coding=utf-8

seq=('name','age','sex')

dict = {}

for i in seq:

    dict[i]=10

print dict

 

 

 

能被哈希:就是唯一的,不可变的

{}.fromkeys(['a',’b’])

这样可以

>>> {}.fromkeys(['a',’b’])

{'a': None, 'b': None}

但是一个list,是不能整体作为字典的key的,因为他可变

 

#encoding=utf-8

import traceback#追踪报错信息

def f_keys(keys,value=None):

    dict_b={}

    if isinstance(keys,(list,tuple,str,set)):

        for i in keys:

            try:

                hash(i)

            except:

                print "value %s can not be key of dict,because of: %s" %(i,traceback.format_exc())

 

            if i not in dict_b:

                dict_b[i] = value

        return dict_b

    else:

        print "data: %s is not iterable" %repr(keys)

 

print f_keys([1,2,3])

c:\Python27\Scripts>python task_test.py

{1: None, 2: None, 3: None}

 

如果把列表参数中把某个元素替换成一个列表,就会报错,不可哈希

print f_keys([1,[2,1],2,3])

c:\Python27\Scripts>python task_test.py

value [2, 1] can not be key of dict,because of: Traceback (most recent call last):

  File "task_test.py", line 8, in f_keys

    hash(i)

TypeError: unhashable type: 'list'

 

Traceback (most recent call last):

  File "task_test.py", line 18, in <module>

    print f_keys([1,[2,1],2,3])

  File "task_test.py", line 12, in f_keys

    if i not in dict_b:

TypeError: unhashable type: 'list'

哈希

 

 

 

这种方法是组合成一个字典,单没有异常处理

>>> exec('a="".join(["{",":1,".join(["a","b"]),":1}"])')

>>> 

>>> print a

{a:1,b:1}

 

1、异常处理,我们要保证系统或者方法的健壮性

2、提示信息要准确

 

Eval

>>> a=raw_input("pls select your choice:")

pls select your choice:x

>>> d={"x":"result"}

>>> d[a]

'result'

>>> def result(x):

...     return x**2

...

>>> eval(d[a]+"(2)")

4

 

 

7、键盘读入一字符串,逆序输出

用推导列表看帮助文档里是否有具体的方法

>>> [i for i in dir(a) if i.startswith("spli")]

[]

>>> [i for i in dir(a) if i.startswith("rever")]

['reverse']

1切片

>>> a

[4, 3, 2, 1]

>>> a[::-1]

[1, 2, 3, 4]

2Reverse

>>> a.reverse

<built-in method reverse of list object at 0x028CE828>

>>> a

[4, 3, 2, 1]

3推导列表

>>> [a[-i-1] for i in range(len(a))]

['g', 'f', 'e', 'd', 'c', 'b', 'a']

>>> "".join([a[-i-1] for i in range(len(a))])

'gfedcba'

 

装饰器,需要研究一下

#encoding=utf-8

a="abcdefg"

def outer(result):

    def inner(a):

        x=result(a)

        return [a[i] for i in x]

    return inner

 

@outer

def result(a):

    return [-1-1 for i in range(len(a))]

print result(a)

 

while循环

>>> n=len(a)

>>> n

7

>>> while n>0:

...     n-=1

...     print a[n]

...

e

d

c

b

a

还有

>>> a

'abcdefg'

>>> map(lambda n:a[-n-1],range(len(a)))

['g', 'f', 'e', 'd', 'c', 'b', 'a']

>>> 

还有

>>> [a[i] for i in reversed(range(len(a)))]

['g', 'f', 'e', 'd', 'c', 'b', 'a']

>>> list(reversed(range(len(a))))

[6, 5, 4, 3, 2, 1, 0]

 

# coding=utf-8

input_str=raw_input("input string:")

print input_str[::-1]

 

# coding=utf-8

input_str=raw_input("input string:")

list=[]

for i in input_str[::-1]:

    list.append(i)

print "".join(list)

 

 

 

8、读入一个整数n,输出n的阶乘

 

# coding=utf-8

number=input("input a int number:")

result=1

for i in range(1,number+1):

    result *= i

 

print result

 

 

另一种:

>>> "".join(["%s*" % i for i in range(1,d+1)])[:-1]

'1*2*3*4*5*6*7*8*9*10'

>>> d

10

>>> eval("".join(["%s*" % i for i in range(1,d+1)])[:-1])

3628800

另一种:

>>> "*".join([str(i) for i in range(1,d+1)])

'1*2*3*4*5*6*7*8*9*10'

>>> eval("*".join([str(i) for i in range(1,d+1)]))

3628800

9、打印1/2, 1/3, 1/4,….1/10

# coding=utf-8

list=[]

for i in range(1,11):

    list.append("1/%s" %i)

print ",".join(list)

 

 

另一种:

s=””

>>> for i in range(1,d+1):

...     s+="1/%s," %i

...

>>> s

'1/1,,1/2,,1/3,,1/4,,1/5,,1/6,,1/7,,1/8,,1/9,,1/10,,1/1,1/2,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1/10,'

>>> s[:-1]

'1/1,,1/2,

 

Str有join方法,center,count

Li

 

可哈希的就是唯一的,

 

>>> a="asdfsdf"

>>> a.split()

['asdfsdf']

>>> "i am a boy".split()

['i', 'am', 'a', 'boy']

>>> a=[]

>>> hash("asd")

-1585925417

>>> hash("asd")

-1585925417

>>>a.extend("asd")

>>> a

['a', 's', 'd']

>>> a.extend([1,2])

>>> a

['a', 's', 'd', 1, 2]

>>> 

 

装饰器方法:

#coding=utf-8

def fun(n):

    if n==2:

        return str(1)+"/"+str(n)

    else:

        return fun(n-1)+(","+str(1)+"/"+str(n))

if __name__=="__main__":

    print fun(10)

 

装饰器方法:

#coding=utf-8

def deco(fun):

    def _deco(n):

        global result

        result+=fun(n)

    return _deco

 

@deco

def fun(n):

    return str(1)+"/"+str(n)+","

if __name__=="__main__":

    result=""

    for i in range(2,11):

        fun(i)

print result[:-1]

 

 

 

浅拷贝,一层元素会变,二层元素不会变

深拷贝,一层元素会变,二层元素也会变

张文琪:

浅拷贝,对象会变,元素不会变

深拷贝,对象会变,元素也会变

 

>>> a=[1,2,3,[4,5]]

>>> a

[1, 2, 3, [4, 5]]

>>> b=copy.copy(a)

>>> a

[1, 2, 3, [4, 5]]

>>> b

[1, 2, 3, [4, 5]]

>>> id(a)

87626176

>>> id(b)

87676328

>>> a is b

False

 

无论深浅拷贝,拷贝后的两个列表不是一个对象,但是容器里面的元素是一样的

 

浅拷贝后,列表a变了,b也跟着便

 

深拷贝,列表中的可变对象是有区别的,操作一个,另一个不会受影响

>>> c=copy.deepcopy(a)

>>> a

[1, 2, 3, [4, 5, 5]]

>>> c

[1, 2, 3, [4, 5, 5]]

>>> id(a),id(b)

(87626176, 87676328)

>>> id(a[3]),id(c[3])

(87611032, 87676368)

>>> id(a),id(c)

(87626176, 87590512)

>>> a[3].append(6)

>>> a

[1, 2, 3, [4, 5, 5, 6]]

>>> c

[1, 2, 3, [4, 5, 5]]

>>> b

[1, 2, 3, [4, 5, 5, 6]]

10.写一个函数实现一个数学公式

# coding=utf-8

x,y = input("input two int number x,y:")

def getpow(x,y):

    result =x**y

    print "result of getpow:",result

 

getpow(x,y)

 

 

11.输入数字a,n,如a,4,则打印a+aa+aaa+aaaa之和

# coding=utf-8

string = raw_input("input a letter:")

number = int(raw_input("input a number:"))

list=[]

for i in range(1,number+1):

    list.append(string*i)

print "+".join(list)

 

 

>>> "+".join((lambda n:["a"*i for i in range(1,n+1)])(4))

'a+aa+aaa+aaaa'

 

装饰器:

装饰器,就是这么个故事,函数a说,我是装饰器啊,其他哪个函数顶着我,我就吃了谁,然后吐出来我的和你的返回结果

 

如果你有做过testng的UI自动化,@beforetest,@beformethod,这种都是testng框架的装饰器。包括,我们学的@classmethod,@staticmethod

 

 

闭包就是一个函数把外部的那些不属于自己的对象也包含(闭合)进来了。

>>> def x(f):

...     print 1

...

>>> @x#等价于x(y)

... def y():

...     print 2

...

1

>>> x(y)

1

>>> type(x(y))

1

<type 'NoneType'>

>>> x(y)()

1

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: 'NoneType' object is not callable

>>> 

 

 

 

 

 

 

不执行的话:

 

12、求100个随机数之和,随机数要求为0—9的整数

# coding=utf-8

import random

list=[]

for i in range(100):

    list.append(random.randint(0,9))

print list

print sum(list)

 

 

 

 

 

13、要求在屏幕上分别显求1到100之间奇数之和与偶数之和

# coding=utf-8

even_sum=0

odd_sum=0

print range(1,101)

for i in range(1,101):

    if i%2 ==0:

        even_sum +=i

    else:

        odd_sum +=i

print "even sum of 1-100:%s"%even_sum

print "odd sum of 1-100:%s"%odd_sum

 

 

闻其:

n3=re.findall(r"(\d*[13579]{1})\,",(str(range(1,101))[:-1]+","))

n4=re.findall(r"(\d*[02468]{1})\,",(str(range(1,101))[:-1]+","))
print (str(range(1,101))[:-1]+",")
for i in range(3,5):
    print eval('reduce(lambda x,y:int(x)+int(y),n%s)' % i)

 

14、输入10个数,并显示最大的数与最小的数

# coding=utf-8

list=[]

for i in range(10):

    list.append(int(raw_input("input a number total 10 times:")))

print "the ten numbers are: %s"%list

print "Max of the numbers is:%s"%max(list)

print "Min of the numbers is:%s"%min(list)

 

闻其:

print sorted(n)[0],sorted(n)[-1]

 

15、给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

# coding=utf-8

num=input("input a number no more than 5 digits:")

print "the digits of num is:%s"%(len(str(num)))

print "descend order of num is:%s"%(str(num)[::-1])

 

 

闻其:

y=re.search("[1-9]+\d*","%s" % x).group(

print [y[-i] for i in range(1,len(y)+1)]

 

 

16、求1000以内的所有水仙花数

# coding=utf-8

for i in range(100,1000):

    if int(str(i)[0])**3+int(str(i)[1])**3+int(str(i)[2])**3 == i:

        print i

 

 

17、编程求s=1!+2!+3!+…..+n!

 # coding=utf-8

list=[]

n=input("input the number:")

for i in range(1,n+1):

    list.append("%s!"%i)

print "+".join(list)

 

 

 

18、钞票换硬币把一元钞票换成一分、二分、五分硬币(每种至少一枚)有多种换法,分别有哪些?

#coding=utf-8

import random

result={}

num=0

for i in range(1,20):

    result["5 cent"]=i

    for j in range(1,(100-i*5)/2):

        result["2 cent"]=j

        num+=1

        result["1 cent"]=100-i*5-2*j

        print result,"5cent+2cent:%s" %(i*5+j*2)

print "there r %s ways to make up 1 yuan"%num

 

 

 

19、自己实现在一句话中查找某个单词的算法,存在返回索引号,否则返回False

#coding=utf-8

sentence="i am student of glory road"

word=raw_input("input a word to find:")

print sentence.split()

for i in sentence.split():

    if i==word:

        print "index of the word '%s' is %s" %(word,sentence.split().index(i))

 

 

20、读入一个十进制整数,实现十进制转二进制算法将其转成二进制数要求:不能使用现成进制转换函数,自己写代码实现

#coding=utf-8

 

decimal_num=int(raw_input("input a decimal number:"))

binary=[]

flag=True

while flag:

    binary.append(str(decimal_num%2))

    if decimal_num/2 ==0:

        flag=False

    decimal_num /=2

 

print "".join(binary[::-1])

 

 

小练习:读入一组数字,然后把每个数字加一后输出。比如说:123,输出之后是2、3、4

#-*-coding:utf-8-

list=[]

num=raw_input("input a number:")

for i in num:

    list.append(str(int(i)+1))

print "".join(list)

 

算法:

1 读入一组数据,纯数字,读入之后的类型是字符串
num = raw_input("input a number:")
2 将这个数字,拆成每个数字是个独立的元素,循环这个字符串,放到list1里
list1=[]
for i in num:
    list1.append(i)
3 生成一个新的list2,存储结果
list2=[]
4 遍历list1的每一个元素,转换为数字类型,然后+1,转换为字符串类型,然后存到list2里面
for i in list1:
    list2.append(str(int(i)+1))
5 这个时候List2里面存的都是字符串类型,然后拼接为最后的结果,结果也是字符串,
转化为int类型。
print int("".join(list2))

 

一行代码解决:

int("".join(map(lambda x:str(int(x)+1),"123")))

 

练习:生成一个随机密码,包含大小写字母,数字定义一个函数,生成一组随机密码,要求大小写组合+数字,10位以上

算法:

生成一个4位的随机大写字母

成成一个3位随机的小写字母

生成一个3位随机的数字

把三种取值组合然后打乱

输出

 

#-*-coding:utf-8-

import random

import string

def passwd():

    list1=random.sample(string.uppercase,4)

    list2=random.sample(string.lowercase,3)

    list3=random.sample(string.digits,3)

    pw=list1+list2+list3

    random.shuffle(pw)

    return "".join(pw)

print passwd()

 

 

吴老:

1 想办法生成4个随机大写字母的字符串

import random
import string
a=list(string.uppercase)
random.shuffle(a)
print a[:4]
str1=a
2 想办法生成3个随机小写字母的字符串
import random
import string
a=list(string.lowercase)
random.shuffle(a)
print a[:3]
str2=a
3 想办法生成3个随机数字的字符串
import random
import string
a=list(string.digits)
random.shuffle(a)
print a[:3]
str3=a
4 讲前三步的结果,拼接成一个10位的字符串
result =str1+str2+str3
5 封装到一个函数里面

#coding=utf-8

import random

import string

def get_random_password():

 

    a=list(string.uppercase)

    random.shuffle(a)

    print a[:4]

    str1=a

 

    a=list(string.lowercase)

    random.shuffle(a)

    print a[:3]

    str2=a

 

    a=list(string.digits)

    random.shuffle(a)

    print a[:3]

    str3=a

    result =str1+str2+str3

 

    return "".join(result)

 

 

if __name__ == "__main__":

    print get_random_password()

 

 

优化:

#coding=utf-8

import random

import string

 

def get_random_elements(s,length):

    a=list(s)

    random.shuffle(a)

    print a[:length]

    return a[:length]

 

def get_random_password():

    return "".join(get_random_elements(string.uppercase,4)+get_random_elements(string.lowercase,3)+get_random_elements

 

(string.digits,3))

 

#只有单独运行本文件时,才会执行这段代码,如果作为模块导入后,是不会运行的

if __name__ == "__main__":

print get_random_password()

 

 

 

11、画等(腰)边三角形(实心、空心)

向上实心三角形

#coding=utf-8

for i in range(10):

    #print "i:",i

    for j in range(0,10-i):

        #print "j:",j

        print "",

    for k in range(10-i,10):

        #print "k:",k

        print "*",

    print ""

 

向下实心三角形

#coding=utf-8

for i in range(10):

    #print "i:",i

    for j in range(0,i):

        #print "j:",j

        print "",

    for k in range(i,10):

        #print "k:",k

        print "*",

    print ""

 

 

 

Degug:

#coding=utf-8

for i in range(11):

    print "i:",i

    for j in range(0,11-i):

        print "j:",j,

        print "*",

    for k in range(11-i,11):

        print "k:",k,

        print "$",

    print ""

 

空心三角形

#coding=utf-8

for i in range(11):

    #print "i:",i

    for j in range(0,11-i):

        #print "j:",j,

        print "",

    for k in range(11-i,11):

        #print "k:",k,

        if i<10:

             if ((k==11-i) or (k ==10)):

                 print "$",

             else:

                 print " ",

        else:

            print "$",

 

    print ""

 

 

 

 

1、打印2000-3000之间被7整除但不被5整除的数,以,(逗号)分隔

#coding=utf-8

list=[]

for i in range(2000,3001):

    if (i%7 ==0)and (i%5!=0):

        list.append(str(i))

print ",".join(list)

 

 

2、输出9*9口诀表

#coding=utf-8

for i in range(1,10):

    for j in range(i,10):

        print "%s * %s =%s" %(i,j,i*j)

 

 

3、计算1 - 1/2 + 1/3 - 1/4 + … + 1/99 - 1/100 + …直到最后一项的绝对值小于10的-5次幂为止

#coding=utf-8

i=1.0

n=1.0

list=["1"]

while 1/i >1.0/10:

    if i%2==0:

        list.append("+ 1/(%s+1)"%i)

    else:

        list.append("- 1/(%s+1)"%i)

    i+=1

list.append("...")

print "".join(list)

 

i=1.0

 

print "i:%s,n:%s" %(i,n)

while 1/i >=1/(10e5+1):

    if i%2==0:

        n+=1/(i+1)

    else:

        n+=-1/(i+1)

    i+=1

print n

 

 

 

4、编程将类似“China”这样的明文译成密文,密码规律是:用字母表中原来的字母后面第4个字母代替原来的字母,不能改变其大小写,如果超出了字母表最后一个字母则回退到字母表中第一个字母

#coding=utf-8

input_letter="abcdwxyzABCDWXYZ"

print input_letter

list=[]

for i in input_letter:

    if i>='a' and i<'w':

        list.append(chr(ord(i)+4))

    if i >='w' and i<='z':

        list.append(chr(ord(i)-26+4))

    if i>='A' and i<'W':

        list.append(chr(ord(i)+4))

    if i >='W' and i<='Z':

        list.append(chr(ord(i)-26+4))

 

print "".join(list)

 

 

5、输出以下如下规律的矩阵

1 2 3 4 5

2 4 6 8 10

3 6 9 12 15

4 8 12 16 20

 

#coding=utf-8

for i in range(1,5):

    a=i

    for j in range(5):

        print i,

        i+=a

    print ""

 

 

 

 

6、对一个列表求和,如列表是[4, 3, 6],求和结果是[4, 7, 13],每一项的值都等与该项的值加上前一项的值

list1=[4,3,6,7,4,2]

list2=[]

for i in range(len(list1)):

    if i ==0:

        list2.append(list1[0])

    else:

        list2.append(list1[i]+list1[i-1])

print list1

print list2

 

 

7、一个字符串 list,每个元素是 1 个 ip,输出出现次数最多的 ip

ip_list=['192.168.1.1','192.168.1.2','192.168.1.2','192.168.1.4','192.168.1.4','192.168.1.2','192.168.1.4',]

count_dict={}

for i in ip_list:

    count_dict[i] =ip_list.count(i)

 

for k,v in count_dict.items():

    if v == max(count_dict.values()):

        print k

 

 

 

8、打印100以内的素数

#coding=utf-8

list=["2"]

for i in range(3,101):

    for j in range(2,i):

        if i%j ==0:

            break

    else:

        list.append(str(i))

print " ".join(list)

 

9、实现一个简易版的计算器,功能要求:加、减、乘、除,支持多数同时进行计算

#coding=utf-8

str=raw_input("input your calculation:")

print "str:",str

print "result:",eval(str)

 

 

 

10、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和

#coding=utf-8

list=[0,1]

seq=[]

for i in range(21):

    list.append(list[-1]+list[-2])

print list[2:]

for i in range(len(list[2:])-1):

    seq.append("%s/%s"%(list[2:][i+1],list[2:][i]))

print seq

print "calculation of:","+".join(seq),"is :"

print eval("+".join(seq))

 

 

 

 

11、画等(腰)边三角形(实心、空心)

#coding=utf-8

for i in range(0,10):

    for k in range(10-i):

        print " ",

    for j in range(2*i-1):

        print "$",

    print ""

 

 

#coding=utf-8

for i in range(0,10):

    for k in range(10-i):

        print " ",

    for j in range(2*i-1):

        if j ==0 or j==(2*i-1-1) or i == 9:

            print "$",

        else:

            print " ",

    print ""

 

 

 

12、画倒等边三角形

 

#coding=utf-8

for i in range(10,0,-1):

    for k in range(10-i):

        print " ",

    for j in range(2*i-1):

        if j ==0 or j==(2*i-1-1) or i == 10:

            print "$",

        else:

            print " ",

    print ""

 

 

 

13、画直角三角形(实心、空心)

#coding=utf-8

for i in range(10):

    for i in range(10-i):

        print "*",

print ""

 

 

#coding=utf-8

for i in range(10):

    for k in range(10-i):

        if i==0 or k==0 or k==(10-i-1):

            print "*",

        else:

            print " ",

    print ""

 

 

 

 

14、用*号输出字母C的图案

print "  "*2,"*"*7

print "  ","**       *"

print " ","**"

print "**"

print "**"

print " ","**"

print "  ","**       *"

print "  "*2,"*"*7

 

 

 

15、打印N,口,H图案

num=0

for i in range(11):

    for j in range(11):

        if j == 0 or j == 10 or j == num:

            print "*",

        else:

            print " ",

 

    print ""

    num+=1

#print "num:",num

 

 

for i in range(11):

    for j in range(11):

        if i == 0 or i == 10 or j==0 or j==10:

            print "*",

        else:

            print " ",

 

    print ""

 

for i in range(11):

    for j in range(11):

        if j==0 or j==10 or i ==5:

            print "*",

        else:

            print " ",

 

    print ""

 

 

16、打印出如图所示的杨辉三角形,要求可以自定义行数

#encoding=utf-8

'''

分析

b=[1]

b = [1] + [b[i] + b[i+1] for i in range(len(b)-1)] + [1]

b=[1],range(len(b)-1)是空的,

b=[1,1]

 

len(b)-1=1

range(len(b)-1)=[0]

i = 0:

    b=[1] + [b[0] + b[1]] + [1]

    b=[1]+[2]+[1]

    b=[1,2,1]

 

b=[1,2,1]

len(b)-1=2

range(len(b)-1)=range(2)=[0,1]

 

    [b[i] + b[i+1] for i in range(len(b)-1)]

    =[b[i] + b[i+1] for i in range(2)]

    =[b[0]+b[1],b[1]+b[2]]=[3,3]

b=[1]+[3,3]+[1]=[1.3.3.1]

b=[1.3.3.1]

    [b[i] + b[i+1] for i in range(len(b)-1)]

    =[b[i] + b[i+1] for i in range(3)]

    =[b[0]+b[1],b[1]+b[2],+[b[2]+b[3]]]

    =[4,6,4]

b=[1]+[4,6,4]+[1]

b=[1,4,6,4,1]

b=[1,5,10,10,5,1]

b=[1,6,15,20,15,6,1]

b=[1,7,21,35,35,21,7,1]

b=[1,8,28,56,70,56,28,8,1]

 

'''

num=input(u"输入行数:".encode('gbk'))

def get_max_len(x):

    b=[1]

    for n in range(x):

        b=[1]+[b[i]+b[i+1] for i in range(len(b)-1)]+[1]

        s="   ".join(map(str,b))

        if n==(x-1):

            return len(s)

print "get_max_len:",get_max_len(num)

 

def yanghui(m):

    b=[1]

    max_len=get_max_len(m)

    #print "max len:",max_len

    print '1'.center(max_len, " ")

    #print "m:",m

    for n in range(m):

        #print "n:",n

        b=[1]+[b[i]+b[i+1] for i in range(len(b)-1)]+[1]

        s="   ".join(map(str,b))

        #print "s:",s

        print s.center(max_len," ")

    return " "

 

print "yanghui(%s):\n" %num

print yanghui(num)

 

 

 

17、打印如图所示图案,要求支持指定行数,但行数必须是奇数行

 

#encoding=utf-8

#1 1 3 3 5 5 7 7

def print_icon(m):

    if m%2==1:

        for i in range(1,m+1,2):

            #print i

            print "*  "*i

        for j in range(m-2,0,-2):

            #print j

            print "*  "*j

    else:

        print "the number is not odd"

 

    return ""

 

n=input("input the odd number:")

print print_icon(n)

-

 

18、要求实现一函数,该函数用于求两个集合的差集,结果集合中包含所有属于第一个集合但不属于第二个集合的元素

 

>>> b

set([1, 2, 3])

>>> a

set([1, 2, 3, 4, 5])

>>> a-b

set([4, 5])

>>> a-(a-b)

set([1, 2, 3])

>>> 

 

 

 

19、找出一段句子中最长的单词及其索引位置,以list返回

#encoding=utf-8

s="i love you not because of who you are, but because of who i am with you "

a=s.split()

d={}

 

for i in a:

    d[i]=len(i)

 

max_len= max(d.values())

 

list=[]

for i in range(len(a)):

    if len(a[i])==max_len:

        list.append((a[i],i))

print list

 

 

 

 

20、返回序列中的最大数

#encoding=utf-8

a=[1,2,3,4,5,6,76,5,3,2,3,6,5,44]

print a

print "max of a:",max(a)

 

 

#encoding=utf-8

a=[1,2,3,4,5,6,76,5,3,2,3,6,5,44]

b=sorted(a,reverse=True)

 

print a

print b

print "max of a:", b[0]

 

 

 

 

练习题1:操作一个list做增删该查操作(写一个图书管理系统)

 

 

练习题2:完成引用复制和非引用复制的一个例子

按引用复制:

a=[1,2,3,['a','b']]

print "a:",a

b=a

print "b:",b

print "a.append(4):"

a.append(4)

print "a:",a

print "b:",b

 

按值拷贝

#encoding=utf-8

a=[1,2,3,['a','b']]

print "a:",a

b=a[:]

print "b:",b

print "a.append(4):"

a.append(4)

print "a:",a

print "b:",b

 

 

练习题3:找到两个列表中不同的元素和相同元素

#encoding=utf-8

list1=[1,2,3,4,5,6]

list2=[5,6,7,8,9,0]

same_element=[]

different_element=[]

for i in list1:

    if i in list2:

        same_element.append(i)

    else:

        different_element.append(i)

for j in list2:

    if j not in list1:

        different_element.append(j)

 

print "same element of two lists are:",same_element

print "different element of two lists are:",different_element

 

 

 

 

练习题4:数字和字母混合的list中,奇数位元素加1,偶数位加2

 

练习题5:递归处理嵌套的list

 

 

练习题6: 遍历list,但是list中元素的数据类型不定,有可能有嵌套的list,嵌套的tupledict等。(没有多重嵌套)

 

练习题7: 通过遍历list去掉重复部分

 

练习题81个纯数字的list中,分别输出奇数坐标数字或偶数坐标数字

 

练习题9:找到序列中最大的元素,自己写算法实现,不能用现有函数

 

练习题10:返回列表中第二大元素

练习题11:键盘读入一字符串,逆序输出

 

练习取0-100内的奇数,存到一个list里面,偶数存到另外一个list里面

#encoding:utf-8

list1=[]

list2=[]

for i in range(0,100,2):

    list1.append(i)

print list1

for i in range(1,100,2):

    list2.append(i)

print list2

 

 

算法:

1 声明一个List存储奇数
2 声明一个list存储偶数
3 从0-100遍历每个数,判断如果可以被2整除就放到偶数列表,否则放奇数列表
4 打印两个列表的内容

 

#1 声明一个List存储奇数
odd_list=[]
#2 声明一个list存储偶数
even_list=[]
#3 从0-100遍历每个数,判断如果可以被2整除就放到偶数列表,否则放奇数列表
for i range(0,101):
    if i %2 ==0:
        even_list.append(i)
    else:
        odd_list.append(i)
#4 打印两个列表的内容
print #2 声明一个list存储偶数
even_list
print odd_list

 

 

#encoding:utf-8

odd_list=[]

even_list=[]

for i in range(0,101):

    if i%2 ==0:

        even_list.append(i)

    else:

        odd_list.append(i)

print "odd list:",odd_list

print "even list:",even_list

 

 

 

 

 

1.基础题:

检验给出的路径是否是一个文件:

检验给出的路径是否是一个目录:

判断是否是绝对路径:

检验给出的路径是否真地存:

 

 

 

1、匹配一行文字中的所有开头的字母内容

#coding=utf-8

 

import re

s="i love you not because of who you are, but because of who i am when i am with you"

content=re.findall(r"\b\w",s)

print content

c:\Python27\Scripts>python task_test.py

['i', 'l', 'y', 'n', 'b', 'o', 'w', 'y', 'a', 'b', 'b', 'o', 'w', 'i', 'a', 'w', 'i', 'a', 'w', 'y']

 

2、匹配一行文字中的所有开头的数字内容

 

import re

s="i love you not because 12sd 34er 56df e4 54434"

content=re.findall(r"\b\d",s)

print content

c:\Python27\Scripts>python task_test.py

['1', '3', '5', '5']

3、匹配一行文字中的所有开头的数字内容或数字内容

>>> print re.match(r"\w+","123sdf").group()

123sdf

4、只匹配包含字母和数字的行

#coding=utf-8

 

import re

s="i love you not because\n12sd 34er 56\ndf e4 54434"

content=re.findall(r"\w+",s,re.M)

print content

c:\Python27\Scripts>python task_test.py

['i', 'love', 'you', 'not', 'because', '12sd', '34er', '56', 'df', 'e4', '54434']

5、写一个正则表达式,使其能同时识别下面所有的字符串:'bat', 'bit', 'but', 'hat', 'hit', 'hut‘

import re

s="'bat', 'bit', 'but', 'hat', 'hit', 'hut"

content=re.findall(r"..t",s)

print content

 

c:\Python27\Scripts>python task_test.py

['bat', 'bit', 'but', 'hat', 'hit', 'hut']

6、匹配所有合法的python标识符

#coding=utf-8

 

import re

s="awoeur awier !@# @#4_-asdf3$^&()+?><dfg$\n$"

content=re.findall(r".*",s,re.DOTALL)

print s

print content

c:\Python27\Scripts>python task_test.py

awoeur awier !@# @#4_-asdf3$^&()+?><dfg$

$

['awoeur awier !@# @#4_-asdf3$^&()+?><dfg$\n$', '']

7、提取每行中完整的年月日和时间字段

#coding=utf-8

 

import re

s="""se234 1987-02-09 07:30:00

    1987-02-10 07:25:00"""

content=re.findall(r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}",s,re.M)

print s

print content

c:\Python27\Scripts>python task_test.py

se234 1987-02-09 07:30:00

    1987-02-10 07:25:00

['1987-02-09 07:30:00', '1987-02-10 07:25:00']

8、将每行中的电子邮件地址替换为你自己的电子邮件地址

#coding=utf-8

 

import re

s="""693152032@qq.com, werksdf@163.com, sdf@sina.com

    sfjsdf@139.com, soifsdfj@134.com

    pwoeir423@123.com"""

 

content=re.sub(r"\w+@\w+.com","xiaxiaoxu1987@163.com",s)

print s

print "_______________________________________"

print content

c:\Python27\Scripts>python task_test.py

693152032@qq.com, werksdf@163.com, sdf@sina.com

    sfjsdf@139.com, soifsdfj@134.com

    pwoeir423@123.com

_______________________________________

xiaxiaoxu1987@163.com, xiaxiaoxu1987@163.com, xiaxiaoxu1987@163.com

    xiaxiaoxu1987@163.com, xiaxiaoxu1987@163.com

    xiaxiaoxu1987@163.com

9、匹配\home关键字:

>>> re.findall(r"\\home","skjdfoijower \home   \homewer")

['\\home', '\\home']

 

1、使用正则提取出字符串中的单词

#coding=utf-8

 

import re

s="""i love you not because of who 234 you are, 234 but 3234ser because of who i am when i am with you"""

 

content=re.findall(r"\b[a-zA-Z]+\b",s)

print content

c:\Python27\Scripts>python task_test.py

['i', 'love', 'you', 'not', 'because', 'of', 'who', 'you', 'are', 'but', 'because', 'of', 'who', 'i', 'am', 'when', 'i', 'am', 'with', 'you']

2、使用正则表达式匹配合法的邮件地址:

 

import re

s="""xiasd@163.com, sdlfkj@.com sdflkj@180.com solodfdsf@123.com sdlfjxiaori@139.com saldkfj.com oisdfo@.sodf.com.com"""

 

content=re.findall(r"\w+@\w+.com",s)

print content

c:\Python27\Scripts>python task_test.py

['xiasd@163.com', 'sdflkj@180.com', 'solodfdsf@123.com', 'sdlfjxiaori@139.com']

3、国际域名格式如下:

域名由各国文字的特定字符集、英文字母、数字及“-”(即连字符或减号)任意组合而成, 但开头及结尾均不能含有“-”,“-”不能连续出现。域名中字母不分大小写。域名最长可达60个字节(包括后缀.com、.net、.org等)。

 

 

4、提取字符串中合法的超链接地址

比如:s = '<a href="http://www.gloryroad.cn">光荣之路官网</a>'

要求,给出的正则表达式能兼顾所有链接地址。

5、统计文件中单词个数

6、写一个函数,其中用正则验证密码的强度

7、匹配ip的正则表达式:

r'^(([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$'

>>> re.match(r'^(([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$',"10.192.178.11").group()

'10.192.178.11'

 

 

计算程序执行耗时

#encoding=utf-8

 

import time

time1= time.time()

n=2

for i in range(100000):

    n=n*2

#print n

time2=time.time()

 

total_time=time2-time1

print "total time of program:%.2f sec"%total_time

 

c:\Python27\Scripts>python task_test.py

total time of program:2.94 sec

2、将时间字符串转换为时间戳

>>> import time

>>> time.localtime()

time.struct_time(tm_year=2018, tm_mon=2, tm_mday=24, tm_hour=19, tm_min=45, tm_sec=24, tm_wday=5, tm_yday=55, tm_isdst=0)

>>> time.mktime(time.localtime())

1519472732.0

将格式时间字符串转换成时间元组,然后再转换成自定义的时间格式字符串

>>> time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())

'2018-02-24 19:46:50'

>>> str_time=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())

>>> str_time

'2018-02-24 19:49:54'

>>> time_array=time.strptime(str_time,"%Y-%m-%d %H:%M:%S")

>>> time_array

time.struct_time(tm_year=2018, tm_mon=2, tm_mday=24, tm_hour=19, tm_min=49, tm_sec=54, tm_wday=5, tm_yday=55, tm_isdst=-1)

>>> custome_time=time.strftime("%Y-%m-%d",time_array)

>>> custome_time

'2018-02-24'

4、将当前时间戳转换为指定格式日期

>>> time_stamp=time.time()

>>> time_array=time.localtime(time_stamp)

>>> time_array

time.struct_time(tm_year=2018, tm_mon=2, tm_mday=24, tm_hour=19, tm_min=58, tm_sec=8, tm_wday=5, tm_yday=55, tm_isdst=0)

>>> format_time=time.strftime("%Y-%m-%d %H",time_array)

>>> format_time

'2018-02-24 19'

5、创建名称为当前时间(年月日)的目录,在这个目录下创建名称为当前时间(年月日)的txt文件,并且输入内容为“你好”

#encoding=utf-8

 

import time

import os

 

os.chdir("d:\\")

print os.getcwd()

 

 

dir_name=time.strftime("%Y-%m-%d",time.localtime())

print dir_name

 

 

 

os.mkdir(dir_name)

print os.listdir(os.curdir)

 

os.chdir(os.getcwd()+dir_name)

print os.getcwd()

try:

    fp=open("%s.txt"%dir_name,"w")

except:

    print "can not"

 

fp.write(u"你好".encode("gbk"))

fp.close()

with open("%s.txt"%dir_name) as fp:

print fp.readline()

c:\Python27\Scripts>python task_test.py

d:\

2018-02-25

['$RECYCLE.BIN', '.one', '1111111111111.txt', '2018-02-25', '2018-02-252018-02-25.txt', '360Downloads', '360\xb0\xb2\xc8\xab\xe4\xaf\xc0\xc0\xc6\xf7\xcf\xc2\xd4\xd8', '360\xc7\xfd\xb6\xaf\xb4\xf3\xca\xa6\xc4\xbf\xc2\xbc', 'a.jpg', 'a.py', 'a.pyc', 'a.txt', 'b.jpg', 'CitrixReceiverWeb.exe', 'codexx.py', 'codexx.pyc', 'dir', 'error.txt', 'KingsoftData', 'QMDownload', 'QQPCMgr', 'sdffffffffffff.txt', 'sys.txt', 'System Volume Information', 'test', 'test2', 'testfile.txt', 'testfile2.txt', 'time', 'xx.txt', 'xxx.txt', '~$\xd3\xa2\xd3\xef\xb1\xca\xbc\xc7.docx', '\xb2\xe2\xca\xd4\xd7\xca\xc1\xcf', '\xd3\xa2\xd3\xef\xb1\xca\xbc\xc7.docx']

d:\2018-02-25

你好

6、获得三天(三小时和三分钟)前的时间方法

三天前:

>>> from datetime import *

>>> today=date.today()

>>> today

datetime.date(2018, 2, 25)

>>> print today-timedelta(days=3)

2018-02-22

三小时前

>>> threeHoursAgo=datetime.datetime.now()-datetime.timedelta(hours=3)

>>> print str(threeHoursAgo)

2018-02-25 17:31:41.932000

>>> print str(threeHoursAgo)[:-7]

2018-02-25 17:31:41

三分钟前:

>>> datetime.datetime.now()

datetime.datetime(2018, 2, 25, 20, 34, 17, 298000)

>>> str(datetime.datetime.now())

'2018-02-25 20:34:25.855000'

>>> str(datetime.datetime.now())[:-7]

'2018-02-25 20:34:44'

>>> threeMinutesAgo=datetime.datetime.now()-datetime.timedelta(minutes=3)

>>> print str(threeHoursAgo)[:-7]

2018-02-25 17:31:41

7、计算昨天和明天的日期

>>> date.today()

datetime.date(2018, 2, 25)

>>> date.today()-timedelta(days=1)

datetime.date(2018, 2, 24)

>>> date.today()+timedelta(days=1)

datetime.date(2018, 2, 26)

8、使用datetime模块来获取当前的日期和时间

Import datetime

>>> date.today()

datetime.date(2018, 2, 25)

>>> str(datetime.datetime.now())

'2018-02-25 20:34:25.855000'

>>> str(datetime.datetime.now())

'2018-02-25 20:38:39.643000'

转载于:https://www.cnblogs.com/xiaxiaoxu/p/9206397.html

你可能感兴趣的文章
Perl正则表达式匹配
查看>>
DB Change
查看>>
nginx --rhel6.5
查看>>
Eclipse Python插件 PyDev
查看>>
selenium+python3模拟键盘实现粘贴、复制
查看>>
第一篇博客
查看>>
typeof与instanceof的区别
查看>>
网站搭建(一)
查看>>
SDWebImage源码解读之SDWebImageDownloaderOperation
查看>>
elastaticsearch
查看>>
postgreSQL 简单命令操作
查看>>
Spring JDBCTemplate
查看>>
Radon变换——MATLAB
查看>>
第五章笔记
查看>>
Iroha and a Grid AtCoder - 1974(思维水题)
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
[LeetCode] Palindrome Number
查看>>