python(二) 字符串 列表

时间:2024-03-22 10:45:01

练习:带循环和条件判断的给定一个数值num, 用户输入使用raw_input()函数来提示用户输入一个1和100之间的数,如果用户输入的数等于num, 显示成功并退出。否则显示一个错误信息然后再次提示用户输入数值,直到满足条件为止。

方法一:利用if语句

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


for num in range(1,101):
    num = input('Please input the correct number(0-100):')
    if 68<num<=100:
        print "the number is high"
    elif 0<=num<68:
         print "the number is low"
    elif num == 68:
        print "Congratulations,right"
        exit()
    else:
        print "Please input correct number(0-100)"

python(二) 字符串 列表

方法二,利用while 和if 语句相嵌套

num = 89


while True:
    guess_num = input("猜测<1-100之间的数>:")
    if num == guess_num:
        print "恭喜猜中"
        exit()
    elif num > guess_num:
        print "too small"
    else:
        print "too large"


## while 循环

1.while中 break和continue的区别

break: 遇到break,跳出所有的循环;

continue: 跳出此次循环,回到循环的开始继续执行;

例如:打印1-10之间的数并且跳过5

2.while if 的运用

#!/usr/bin/env python
# coding:utf-8
i = 0
while i < 10:
        i += 1
        if i == 5:
                continue
        print i

python(二) 字符串 列表

3.死循环while...  else.....


模拟shell输入环境

while True:
    cmd = raw_input("[[email protected]>>> ~]# ")
    if not cmd:
        continue
    elif cmd == "quit":
        break
    else:
        print "run %s" %(cmd)

python(二) 字符串 列表



##字符串

  字符串定义的三种方式:'hello'   "hello"     """hello"""

      注意三重引号有三个作用:

     • 块注释:多行代码注释
     • 函数的doc文档
     • 字符串格式化

转义符号:一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符
       \n: 代表换行符 \": 代表双引号本身
       \t: 代表tab符 \': 代表单引号本身

操作符

成员操作符: in

连接操作符: and

重复操作符:*

python(二) 字符串 列表


*索引:获取特定偏移的元素,给出一个字符串,可输出任意一个字符,如果索引为负数,就是相当于从后向前数。

*切片

切片S[i:j]提取对应的部分作为一个序列:
•上边界并不包含在内;
•如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;
•扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;切片s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法

python(二) 字符串 列表


字符串的常用操作:

str.capitalize() //将首字母大写      

str.strip()   ## 删除首尾的字符串或者空格

str.endswith() ##判断以什么结尾,返回为布尔值

str.startswith() ##判断以什么开头返回布尔值

str.isalnum() //判断是否都是字母或数字

str.isalpha() //判断是否都是字母

str.isdigit() //判断是否都是数字

str.islower() //判断是否都是小写

str.isspace() //判断是否都是英文空格

str.istitle() //判断是不是都是标题(有大小写)

str.isupper() //判断是不是都为大写字母

str.find(sub[,start[,end]])
- 判断sub是否在str中,存在返回索引值,不存在返
回-1.
str.index(sub[,start[,end]])
- 与find方法函数功能相同,如果sub不存在时抛出
ValueError异常;

python(二) 字符串 列表


str.center(width[,fillchar])  返回一个长为width的新字符串,在新字符串中原字符居中,其他部分用fillchar指定的符号填充,未指定时通过空格填充。字符串常用操作:

str.ljust()  左边填充     str.rjust()右边填充

str.count(sub[, start[, end]]) -> int   返回sub在str中出现的次数,如果start与end指定,则返回指定范围内的sub出现次数

python(二) 字符串 列表


str.split([sep[,maxsplit]])    以sep字符串作为分割符对str进行切割,默认为空格

python(二) 字符串 列表

str.join()

python(二) 字符串 列表



案例一:

根据变量名的命名规则,判断变量名是否合法

while True:
    s = raw_input("变量名:")
    if not (s[0].isalpha() or s[0]=="_"):
        print "不合法"
    else:
        # 依次读取除了第一个字符之外的所有字符;
        for i in s[1:]:
            if not(i.isalnum() or i=="_"):
                print '不合法'
                break
        else:    
            print "合法"

python(二) 字符串 列表

打印字符串对应的索引号:

s = "hello"

for i  in range(len(s)):

       print "%s %d"  %(s[i],i)

python(二) 字符串 列表



##zip 分包

a =  "ABC"

b =  "abc"

zip (a,b)

python(二) 字符串 列表




##列表

定义一个空列表
     list = [ ]

定义一个包含元素的列表,元素可以是任意类型,包括数值类型,列表,字符串等均可

    list = ["fentiao", 4, 'gender']
    list1 = ['fentiao',(4,'male')]

python(二) 字符串 列表


工厂函数方式创建列表:

li = list("hello")

列表的索引、切片,拼接+, 重复*, 成员操作符

python(二) 字符串 列表



可以通过for i in list1进行遍历列表中的各个元素.

python(二) 字符串 列表


更新列表   .append,   .extend;

append:  添加一个元素

extend: 添加一个列表


python(二) 字符串 列表

 python(二) 字符串 列表

删除列表;

.pop()   :按照索引删除列表中的数 默认删除最后一个

.remove  删除列表中的某一个元素

python(二) 字符串 列表


列表的排序

.insert( )      插入元素

.reverse( )    倒置顺序

.ip.sort( )      排序

python(二) 字符串 列表

综合考察练习:
案例1
    1. 用户名和密码分别保存在列表中;
    2. 用户登录时,判断该用户是否注册;
    2. 用户登录时,为防止黑客暴力**, 仅有三次机会;
    3. 如果登录成功,显示登录成功(exit(), break).

方法一

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

users = ["user1", "user2", "user3"]
passwords = ["123", "456", "789"]

i  = 0
while i < 3:
    name = raw_input("请输入用户名:")
    if name not in users:
        print "用户未注册"
        break
    password = raw_input("请输入密码:")
    i += 1
    index = users.index(name)
    if password == passwords[index]:
            print "恭喜登录成功"
            break
    else:
            print "请输入正确的用户名或密码!"
else:
    print "已登录三次,请稍后再试"


方法二:

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

user = ["westos","redhat","admin","lee"]
passwd = ["123", "344", "312", "324"]

trycount = 0
while trycount < 3:
    trycount +=1
    in_user = raw_input("输入用户名:")
    if in_user not in user:
        print "用户未注册"
        break
    in_passwd = raw_input("输入密码:")
    for i in range(len(user)):
        if in_user == user[i] and in_passwd == passwd[i]:
            print "登陆成功"
            exit()
    else:
        print "密码错误"
else:
    print "超过三次"

python(二) 字符串 列表


案例2

出入栈

stack = [ ]

info =  """

                 栈操作
    1. 出栈
    2. 入栈
    3. 查看栈元素
    4. 退出
"""
print info

while 1:
    choice = raw_input("Choice:").strip()
    
    if choice == '1':
        if not stack == []:
            stack.pop()
        else:
            print "栈为空"
    elif choice == '2':
        value = raw_input("请输入入栈的值:").strip()
        stack.append(value)
    elif choice == '3':
        print "栈元素:",
        for i in stack:
            print i,
        print
    elif choice == '4':
        exit()
    else:
        print "not valid choice"

python(二) 字符串 列表