字符串处理和循环控制

# -*- coding: utf-8 -*-
import string

s = 'abc'
s[0] = 'x'   #string不支持元素操作

#去除空格
s = ' abcd efg'
print(s.strip())  #去掉所有空格,返回的是新的字符串,因为字符串不能修改
print(s.lstrip()) #去掉左边空格
print(s.rstrip()) #去掉右边空格
print(s)

#字符串的连接
s1 = 'abc'
s2 = 'def'
print(s1 + '\n' + s2)

#大小写
s = 'abc def'
print(s.upper())
print(s.upper().lower())
print(s.capitalize())

#位置比较
s_1 = 'abcdef'
s_2 = 'abdeffxx'
print(s_1.index('bcd'))

#在python3中,cmp函数被移除 字符串比较,排在前面的字符串小,当顺序一样时,长度长的大。
print(s_1 == s_2)
print(s_1 < s_2)
print(s_1 > s_2)

#长度
print(len('abcdef'))

#字符串的分割和连接
s = 'abc,def,ghi'
splitted = s.split(',')
print(type(splitted))  #返回的是一个数组 list
print(splitted)

s= '''abc
def
ghi
efg'''
s_1 = s.split('\n')
s_2 = s.splitlines()
print(s_1)
print(s_2)

s = ['abc','def','ghi']  #指定字符连接序列中元素后生成的新字符串
print(''.join(s))
print('-'.join(s))
print('\n'.join(s))

#常用判断
s = 'abcdefg'
print(s.startswith('abc'))
print(s.endswith('efg'))
print('1234abcd'.isalnum())
print('\t1234abcd'.isalnum())
print('abcd'.isalpha())
print('1234'.isdigit())
print('    '.isspace())
print('fasf'.islower())
print('ASD'.isupper())
print('Hello world'.istitle())

#数字到字符串
print(str(5))
print(str(5.))
print(str(5.123))
print(str(-5.1))

#字符串到数字
print(int('123'))
print(float('1.1'))
print(int('fff',16))  #后面代表16进制

#字符串本身不可以修改,那只能复制到一个lis数组中去
s = 'abcdsef'
l = list(s)
print(l)


#for 循环
#for i in 迭代器 range(start,end,steps)
for i in range(0,20,2):
    print(i)

#while循环
s= 0
i =1
while i<=100:
    s += i
    i +=1
print(s)

#continue,pass,break用法
'''
pass

不做任何事情,只起到占位的作用,也就是说它是一个空操作

continue

当continue语句在循环结构中执行时,并不会退出循环结构,而是立即结束本次循环,重新开始下一轮循环,
也就是说,跳过循环体中在continue语句之后的所有语句,继续下一轮循环。

break

当break语句在循环结构中执行时,它会导致立即跳出循环结构,转而执行该结构后面的语句。

exit()

结束整个程序
'''
for i in range(0,100):
    if i <10:
        pass
    elif i <30:
        continue
    elif i <35:
        print(i)
    else:
        break
    
#函数
def func_name(arg_1, arg_2):
    print(arg_1, arg_2)
    return arg_1, arg_2  #返回的是一个元祖,元祖不可以修改

r = func_name(1,2)
print(r)

#函数默认参数
def func(x, y=500):
    return x + y
print(func(100,600))
print(func(100))
print(func(y = 100, x =100))

#可变参数 必须在最后 就是把星号之后的作为可变参数处理
def func(name, *numbers):
    print(type(numbers)) #name之后的所有数值(啥类型都行)用星号打包成一个元祖 只读数组

#字典
def my_print(*args):
    print(args)

my_print(1,2,3,4,'a','b')
def func(name, **kvs): #**means key/value
    print(name)
    print(type(kvs))
    print(kvs)
func('Tom', china = 'Bejing', UK = 'London') #把变量名和传入的参数变成字典

#命名关键字参数
def func(a,b,c,*,china,uk):  #*号后面的变量必须带名字就是用 = 
    print(china,uk)
func(1,2,3,china = 'BJ', uk = 'LD')

def func(a,b,c =0, *args, **kvs):
    print(a,b,c)
    print(args)
    print(kvs)
func(1,2)
func(1,2,3)
func(1,2,3,'a','b','c')
func(1,2,3,'a','b',china = 'BJ', uk = 'london')

#斐波那契数列  f(n) = f(n-1) - f(n-2)

def fib(n):
    if n < 1:
        raise ValueError
    elif n <= 2:
        return 1
    else:
        return fib(n-1) + fib(n-2)

#汉罗塔问题
        
def hanoi(n,source,target, helper):
    pass
    if n ==1:
        print(source + '->' + target)
    else:
        hanoi(n-1,source,helper,target)
        print(source + '->' + target)
        hanoi(n-1,target,helper,target)
hanoi(4,'A','B','C')

 #函数可以作为参数
p = print
p(1,2,3)

def sum(x, y, p =None):
    s = x + y
    if p:
        p(s)
    return s 






猜你喜欢

转载自blog.csdn.net/gaoyishu91/article/details/80117915