python學習筆記-練手實例


1、題目:輸出 9*9 乘法口訣表。
    程序分析:分行與列考慮,共9行9列,i控制行,j控制列
    代碼:
for i in range(1,10):
    print ('\r')
    for j in range(1,i+1):
        print "%d*%d=%d"  %(i,j,i*j) ,

 

2、題目:有兩個磁盤文件A和B,各存放一行字母,把這兩個文件中的信息合並(按字母順序排列), 輸出到一個新文件C中

    代碼:

fo=open("/Users/chichi/Documents/pythonscript/python學習/練手實例/a.txt")
str1=fo.read()

fo2=open("/Users/chichi/Documents/pythonscript/python學習/練手實例/b.txt")
str2=fo2.read()

str3=list(str1+str2)
str3.sort()
s=''
s=s.join(str3)

fo3=open("/Users/chichi/Documents/pythonscript/python學習/練手實例/c.txt","a+")
fo3.write(s)

 

3、題目:從鍵盤輸入一些字符,逐個把它們寫到磁盤文件上,直到輸入一個 # 為止

    代碼:

def fo():
    str=''
    fo2=open("/Users/chichi/Documents/pythonscript/python學習/練手實例/d.txt","w")
    while "#" not in str:
        fo2.write(str)
        str=raw_input("請輸入內容:")
        
fo()
      

 

4、題目:假設我們有一份文件,文件中包含了很多個人信息。現在需要一份去除其中敏感信息的版本,將文件中所有手機號的4~7位和身份證號的6~15位用 * 替換

    代碼:

#coding=utf-8

import re
def remove(data, i, line, regex, left, right):
    m=re.search(regex,line)
#re.search(pattern, string[, flags]) 若string中包含pattern子串,則返回Match對象,否則返回None,注意,如果string中存在多個pattern子串,只返回第一個
    if m:
        digits = m.group(0)
        start, end = m.start(0), m.end(0)
        data[i]=line[:start+left] + '*' * (right-left+1)+ line[start+right+1:]
        return True
    return False

infile='/Users/chichi/Documents/pythonscript/python學習/練手實例/info.txt'
outfile='/Users/chichi/Documents/pythonscript/python學習/練手實例/outfile.txt'
with open(infile) as fr:
    data=fr.readlines()

regex_id='(\d{18}|\d{17}x)'
regex_phone='1\d{10}'
for i, line in enumerate(data):
    status = remove(data, i, line, regex_id, 5, 14)
    if not status:
        status = remove(data, i, line, regex_phone, 3, 6)

with open(outfile, 'w') as fw:
    for line in data:
        fw.write(line)

#enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中

 

5、題目:從控制台輸入或從文件中讀入一段文本,統計出其中每個字符出現的次數,並按照出現次數排序輸出

    代碼:

    #range() 函數可創建一個整數列表,一般用在 for 循環中
        #語法:range(start, stop[, step])
        #參數說明:
        #start: 計數從 start 開始。默認是從 0 開始。例如range(5)等價於range(0, 5);
        #stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
        #step:步長,默認為1。例如:range(0, 5) 等價於 range(0, 5, 1)
    #list.count(obj)    統計某個元素在列表中出現的次數
    #list.append(obj)   在列表末尾添加新的對象
#方式一
def countstr():
    stra=raw_input("請輸入一串英文字符:")
    list=[]
    for i in range(len(stra)):
        num=str(stra.count(stra[i]))
        strb=stra[i]+":"+num
        if strb not in list:
            list.append(strb)
    print list

countstr()   
      

"""
str=raw_input("請輸入一個字符串:")
res={}
for i in str:      
    if  i  in res:            
        res[i]=res[i]+1   
    else:           
        res[i]=1
print(res)
"""

 

6、題目:隨機生成5個長度為6的優惠碼

#方式一
import  random
def creat_num(num,long):
    str = 'qwertyuiopasdfghjklzxcvbnm1234567890'
    b = []
    for i in range(num):
        a = ''
        for j in range(long):
            a = a+random.choice(str)
        b.append(a)
    return b

print creat_num(5,6)

"""

import random
stra='abcdefghijklmnopqrstuvwxyz0123456789'
def create_num(num,long):
    for i in range(num):
        a=''
        for j in range(long):
            a=a+random.choice(stra)
        print a

create_num(7,8)

 

7、題目:人民幣轉換

# -*- coding: UTF-8 -*-
dollarClass="{}元"
hornClass="{}元{}角"
centClass="{}元{}角{}分"

def convert(input):
    data = input.split(".")
    if 1==len(data):
        return dollarClass.format(data[0])
    elif 2==len(data):
        if 1==len(data[1]):
            return hornClass.format(data[0],data[1])
        elif 2==len(data[1]):
            horn=data[1]
            return centClass.format(data[0],horn[0],horn[1])
        else:
            return "沒有比分更少了哦"
    else:
        return "這是外星貨幣哦"

print(convert("134.27"))
print(convert("34.27"))
print(convert("34.2"))
print(convert("34"))
print(convert("0.23"))
print(convert(".23"))
print(convert("0.234"))
print(convert("0.234.1"))
print(convert("0.234.1"))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM