1. 程式人生 > >Python字符串,列表

Python字符串,列表

python字符串 列表

字符串:
字符串的創建:
單引號, 雙引號 ,三引號 <註意: 轉義字符的使用>
字符串的特殊性:
索引 切片 連接 重復 成員操作符(in, not in)

字符串的常用方法:
1). 判斷字符串的類型(isdigit, isspace, isupper,islower ......)
2). 字符串開頭結尾的判斷(endwith,startwith)
endwith -- 多用於查找指定的文件格式(.log, .png......)
startwith -- 所用於判斷使用的協議(http://, https://, ftp://)
3). 去除空格(left,middle,right)
lstrip #去除左邊空格

replace (" ", "") # 使用replace函數間接替換中間的空格
rstrip #去除右邊空格
strip #去除左右兩邊空格
4).居中 , 居左, 居右
center
ljust
rjust

    5). 切片
    split()
    6). 連接
    join()

內置函數:
cmp max min enumerate zip sum len abs

數值,字符串是不可變數據類型: 列表是可變數據類型

測試練習:
2017-好未來-筆試編程題

  • 題目描述:
    輸入兩個字符串,從第一字符串中刪除第二個字符串中所有的字符。例如,輸入”They are students.”和”aeiou”,則刪除之後的第一個字符串變成”Thy r stdnts.”

  • 輸入描述:
    每個測試輸入包含2個字符串

  • 輸出描述:
    輸出刪除後的字符串

  • 示例1:
輸入
    They are students.
    aeiou
輸出
Thy r stdnts.
#!/usr/bin/env python
#coding:utf-8
s1 = raw_input ("please input your first string:")
s2 = raw_input ("please input your second string:")
for i in s2:
    s1=s1.replace(i,"")
else:
    print s1

測試結果:技術分享圖片

2017-小米-句子反轉

  • 題目描述:

    給定一個句子(只包含字母和空格), 將句子中的單詞位置反轉,單詞用空格分割, 單詞之間只有一個空格,前後沒有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”

  • 輸入描述:

    輸入數據有多組,每組占一行,包含一個句子(句子長度小於1000個字符)

  • 輸出描述:

    對於每個測試示例,要求輸出句子中單詞反轉後形成的句子

  • 示例1:
- 輸入
    hello xiao mi
- 輸出
    mi xiao hello

#!/usr/bin/env python
#coding:utf-8
print " ".join(raw_input("please in put your first string:").split()[::-1])

測試結果:
![](http://i2.51cto.com/images/blog/201803/18/d07ff4e4a83878f51f96ccfb1c4ada48.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

華為測試:
題目描述:輸入一行字符串,分別統計出包含英文字母,空格,數字和其他字符的個數

#!/usr/bin/env python
#coding:utf-8
s = raw_input("請輸入字符:")

al_count, space_count, num_count, other_count = 0, 0, 0, 0

for i in s:
if i.isalpha():
al_count += 1
elif i.isspace():
space_count += 1
elif i.isdigit():
num_count += 1
else:
other_count += 1

print "英文字母個數:%d\n空格個數:%d\n數字個數:%d\n其他字符個數:%d" % (
al_count, space_count, num_count, other_count)

測試結果:
![](http://i2.51cto.com/images/blog/201803/18/a7fe6d2648487416412ad7562770f7d4.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

枚舉,zip

#!/usr/bin/env python
#coding:utf-8
s = "hello"
for i in range(len(s)):
print i,s[i]

測試結果:
![](http://i2.51cto.com/images/blog/201803/18/6265339f9db37d71ce9d78bd435b4ce9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

enumerate內置函數枚舉;
![](http://i2.51cto.com/images/blog/201803/18/1ac49d6feccfad85077d3bf1a037189f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

zip內置函數;
![](http://i2.51cto.com/images/blog/201803/18/2b39e4c9cbaa96c517666afb227ec486.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

List 列表
列表特性:

#!/usr/bin/env python
#coding:utf-8
array = [1, 2, 3, 4, 5, 6, 7]
li = [1, 1.0, 1L, "hello", 1 + 3j]

#索引:正向索引和反向索引片

print li[::-1]


#重復

print li * 3


#連接

print array + li


#成員操作符

print 1 in li
print 1 not in li


結果輸出:
![](http://i2.51cto.com/images/blog/201803/18/ba67f09d4cf8ddb63e4637d06d1f1db0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

列表增刪查改

#!/usr/bin/env python
#coding:utf-8
allow_ip = [‘172.25.254.91‘, ‘172.25.254.2‘, ‘172.25.254.14‘, ‘172.25.254.32‘]

# 增
#append追加元素到列表的最後;

#allow_ip.append(‘172.25.254.6‘)
#print allow_ip


#insert將元素添加到指定索引的前面;

#allow_ip.insert(1,‘172.25.254.34‘)
#print allow_ip


#extend是追加多個元素到列表中;

#allow1_ip = [‘172.25.254.56‘, ‘172.25.254.66‘]
#allow_ip.extend(allow1_ip)
#print allow_ip


#改
#給列表的指定索引重新賦值;

#allow_ip[0] = ‘172.25.254.11‘
#print allow_ip


#查
#顯示指定元素出現的次數;

#print allow_ip.count(‘172.25.254.1‘)


#顯示指定元素的索引值;如果出現多個,顯示小的那個索引;如果元素不存在,報錯,ValueError;

#print allow_ip.index(‘172.25.254.1‘)


#刪
#pop是刪除指定索引的值;如果列表為空或者索引不在範圍內,則報錯; 如果不指定索引值,默認刪除最後一個元素;
#allow_ip.
#刪除列表中最先出現的值,不存在,則報錯;

#allow_ip.remove(‘172.25.254.1‘)
#print allow_ip


#反轉列表

#allow_ip.reverse()


#列表排序

allow_ip.sort()
print allow_ip


測試練習:
多用戶登陸系統:
        1). 已知多個用戶名和密碼;
        2). 判斷用戶名是否存在,
                如果登陸的用戶不存在,則報錯, 清註冊用戶;
                如果用戶存在, 則判斷密碼是否正確:
                    如果正確, 輸出用戶登陸成功;
                    如果不正確, 輸出登陸失敗;

#!/usr/bin/env python
#coding:utf-8
import getpass

users = [‘user1‘, ‘user2‘, ‘user3‘]
passwds = [‘123‘, ‘456‘, ‘123‘]

inuser = raw_input("用戶名:")
inpass = getpass.getpass("密碼:")

#if 用戶是否存在(成員操作符):
if inuser in users:
index = users.index(inuser)
passwd = passwds[index]
if passwd == inpass:
print "%s登陸成功....." %(inuser)

##1).找出用戶名的索引值
##2).取出對應用戶名的密碼
##3).判斷是否一致
#if 密碼正確:
    #pass
else:
    print "密碼不正確..."

else:
print "%s 不存在,清註冊....." %(inuser)


測試結果:
因為導入getpass。在測試時必須用終端進行。
![](http://i2.51cto.com/images/blog/201803/18/2783a8fae766bf49e8261718bfe51e25.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

測試練習:
批量生成學號:
學號前4位為1705
    依次有三個學院:電子工程學院(01), 軟件學院(02), 商學院(03)
    每個學院有200人;
#!/usr/bin/env python
#coding:utf-8
for i in  [‘01‘, ‘02‘, ‘03‘]:
    for j in range(1,201):
        print "1705%s%.3d" %(i,j)

Python字符串,列表