一、循环和分支

  1.  条件分支语句

  if  条件:

    代码块

  else:

    代码块

  2.  循环语句之while

  思考1:求1+2+3+....+10的值  

sum = 0
num = 1
while num < 101:
    sum += num
    num += 1
print(sum)

   for 循环

  for 语句:

    代码块

二、字符串操作

  1.字符串的拼接

  使用加号进行链接  

#字符串的链接,通过“+”进行链接
s1 = 'welcome'
s2 = 'to guangzhou'
print(s1 + s2)

  使用“,‘进行链接

s1 = 'hello'
s2 = 'world'
print(s1, s2)
#使用“,”链接的时候,在“,”的位置会产生一个空格

  使用%格式化链接  

s1 = 'hello'
s2 = 'world'
print("%s %s"%(s1, s2))

 

  使用join函数进行链接

s1 = ['hello', 'world']
print("".join(s1))

  注意:''.join*()函数内部只需要传递一个参数。

  2.重复输出字符串

#重复输出字符串,通过乘法的方式实现
s3 = 'good'
print(s3 * 3)

  3.获取字符串中的字符

#通过索引的方式实现
#索引:给一个字符串中的字符从0开始编号,也成为下标
#索引的取值范围:[0,str.length-1]
#访问方式: 变量名称[索引]
str3 = 'good'
print(str3[0])
#索引值还可以从-1开始,-1代表倒数第一个字符
print(str3[-1])

  4.截取字符串

#通过索引的方式实现
#索引:给一个字符串中的字符从0开始编号,也成为下标
#索引的取值范围:[0,str.length-1]
#访问方式: 变量名称[索引]
str3 = 'good'
print(str3[0])
#索引值还可以从-1开始,-1代表倒数第一个字符
print(str3[-1])

  5.判断是否包含指定字符  

#判断字符串中是否包含某指定字符串
str4 = "you are a good boy"
print("good" in str4)
#若包含有则返回True否则为False

  6.格式化输出

#通过%来改变后面的字母或者是符号的含义,%被称为占位符
# %s:格式化字符串
# %d:格式化整数
# %f:格式化浮点数,可指定小数点后的精度
age = 18
name = "丽丽"
weight = 45.5
print("my name is %s , I am %d year old and my weight is %.2f kg"%(name, age, weight))
#注意:%.nf表示精确到小数点后n位,会四舍五入

三、关于字符串常用函数

  1.eval(str)

  功能:将字符串str当成有效的表达式来求值并返回计算结果。可以把list,tuple,dict,set和string相互转化

>>>num1 = eval('123')
>>>print(num1)
123

>>>num2 = eval("[1, 2, 3]")
>>>print(num2)
[1, 2, 3]

>>> num3 = eval("12-3")
>>> print(num3)
9

  2.len(str)

  功能:返回当前字符串的长度(字符的个数)

>>> len("you are good")
12

  3.str.lower()

  功能:返回一个把字符串中的大写字母转为小写字母的字符串

>>> str = "Hello World"
>>> print(str.lower())
hello world

  4.str.upper()

  功能:返回一个把字符串中的小写字母转换为大写字母的字符串 

>>> str = "Hello World"
>>> print(str.upper())
HELLO WORLD

  5.str.swapcase()

  功能:返回一个把字符串中的大写字母转为小写字母,小写字母转为大写字母的字符串(字符串大小写反转)

>>> str = "Hello World"
>>> print(str.swapcase())
hELLO wORLD

  6.str.capitalize()

  功能:返回一个首字母大写,其他小写的字符串

>>> str = "Hello World"
>>> print(str.capitalize())
Hello world

  7.str.title()

  功能:返回一个每个单词首字母大写的字符串

>>> str = "Hello World"
>>> print(str.title())
Hello World

  8.str.center(width[,fillchar])

  功能:返回一个指定宽度的居中字符串,fillchar为填充字符

>>> str = "Hello World"
>>> print(str.center(50,"*"))
*******************Hello World********************

  9.str.ljust(width[,fillchar])

  功能:返回一个指定宽度的左对齐字符串,fillchar为填充字符。默认使用空格填充

>>> str = "Hello World"
>>> print(str.ljust(50,"*"))
Hello World***************************************

 

  

  10.str.rjust(width[,fillchar])

  功能:返回一个指定宽度的左对齐字符串,fillchar为填充字符。默认使用空格填充

>>> str = "Hello World"
>>> print(str.rjust(50,"*"))
***************************************Hello World

  11.str.zfill(width)

  功能:返回一个长度为width字符串,原字符串右对齐,前面补0

>>> str = "Hello World"
>>> print(str.zfill(50))
000000000000000000000000000000000000000Hello World

  12.str.count(str[ ,strat][,end])

  功能:返回字符串中str出现的次数,可以指定一个范围,若不指定,则默认从头到尾,匹配的时候是区分大小写的

>>> str = "Hello World"
>>> print(str.count("hello", 0 , 10))
0

  13.str.find(str1[,start],[,end])

  功能:从左右右检测str1字符串是否包含字符串中,可以指定范围,默认从头到尾。

  返回的是第一次出现的下标,若未查询到,则返回-1

>>> str = "Hello World"
>>> str1 = "llo"
>>> print(str.find(str1, 0 , 10))
2

  14.str.rfind(str1[,start][,end])

  功能:类似于str.find(),不过是从右边开始查找

>>> str = "Hello World"
>>> str1 = "llo"
>>> print(str.rfind(str1, 0 , 10))
2

  15.str.index(str1[strat=0],[end = len(str)])

  功能类似于find(),与find()不同的是,如果str1不存在的时候会报一个异常

>>> str2 = "Hello World"
>>> str1 = "hello"
>>> print(str2.index(str1, 0 , 10))
ValueError: substring not found

  16.str.lstrip()

  功能:截掉字符串左侧指定的字符串,默认删除空白符(包括'\n','\r','\t',' ')

>>> str = '**** you are very good'
>>> print(str.lstrip())
>>> print(str.lstrip())
**** you are very good
>>> print(str.lstrip("*"))
 you are very good

  17,str.rstrip()

  功能:截掉字符串右侧指定的字符串,则默认删除空白符(包括'\n','\r','\t',' ')

>>> str = '**** you are good****'
>>> print(str.rstrip())
**** you are good****
>>> print(str.rstrip("*"))
**** you are good

  18.str.strip()

  功能:截掉字符串左右两侧指定的字符串,则默认删除空白符(包括'\n','\r','\t',' ')

>>> str1 = "      hello world     "
>>> str1.strip()
'hello world'

  19.string.split(str = '',num=string.count(str))

  功能:以str为分割符切片string,如果num有指定值,则仅分割num个子字符串

  str--分割符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。num--分割次数

>>> str1 = "hello you are good"
>>> str1.split()
['hello', 'you', 'are', 'good']
>>> str1.split(" ",2)
['hello', 'you', 'are good ']

  20. str1.splitlines([keepends])

  功能:字符串会按照行(’\r‘,'\r\n','\n')进行分割,返回一个包含各行作为元素的列表,如果参数keepends的值为False,不包含换行符,如果为True,则保留换行符

str2 = '''how are
you ?
i am
fine
!
'''

list2 = str2.splitlines()
print(list2)
#结果
['how are', 'you ?', 'i am', 'fine', '!']



str2 = '''how are
you ?
i am
fine
!
'''

list2 = str2.splitlines(keepends=True)
print(list2)
#结果
['how are\n', 'you ?\n', 'i am\n', 'fine\n', '!\n']

 

  21.str1.join(seq)

  功能:以指定字符串作为分隔符,将seq中的所有元素合并成为一个新的字符串

  

list2 = ['you', 'are', 'very', 'great', '!']
str3 = ' '.join(list2)
print(str3)
#结果
you are very great !


str1 = "how are you , i am fine thank you"
str3 = "*".join(str1)
print(str3)
#结果
h*o*w* *a*r*e* *y*o*u* *,* *i* *a*m* *f*i*n*e* *t*h*a*n*k* *y*o*u

  注意:如果连接的是字符串,则它会把字符串中的每个字符使用指定字符连接

  22.replace(old,new[,count])

  功能:将字符串中的old替换成new,若不指定count,则默认全部替换,若指定count,则替换前count个

str1 = "how are you , i am fine thank you"
str2 = str1.replace("you" ,'me')
print(str2)
#结果
how are me , i am fine thank me

 

  23.判断字符串的开头结尾

  str.startswith(str1,strat = 0, end = len(str))

  功能:在给定的范围内判断字符串是否以给定的字符串开头,如果没有指定范围,默认整个字符串  

str1 = "aaa bbb  ccc  deee"
print(str1.startswith("aa"))
#结果
True


str1 = "aaa bbb  ccc  deee"
print(str1.startswith("aa", 3, 9))
#结果
False

 

  

  24.str.endswith(str1,strat = 0, end = len(str))

  功能:在给定的范围内判断字符串是否以给定的字符串结尾,如果没有指定范围,默认整个字符串

str1 = "aaa bbb  ccc  deee"
print(str1.endswith("e"))
#结果
True

str1 = "aaa bbb  ccc  deee"
print(str1.endswith("e", 3 ,9))
#结果
False

 

  25.编码与解码

  str.encode(encoding = 'utf-8',errors = 'scrict')

  功能:字符串的编码,若不指定encoding则默认utf-8  

str1 = "你好吗?"
data = str1.encode()
print(data)
print(type(data))
#结果
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x90\x97\xef\xbc\x9f'
<class 'bytes'>

 

  str.decode(encoding = 'utf-8')

  功能:对字符进行解码,若不指定编码格式,则默认选择utf-8 

str1 = "你好吗?"
data = str1.encode()
print(data)
print(type(data))

data2 = data.decode()
print(data2)
print(type(data2))

#结果
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x90\x97\xef\xbc\x9f'
<class 'bytes'>
你好吗?
<class 'str'>

 

  注意:解码时的编码格式要与编码时的保持一致,

  拓展:errors= ingnore的时候,忽略错误

练习:

1.计算1~100以内所有能被3或者17整除的数的和

2.计算100-999的水仙花数的个数。

3.计算200~500以内能被7整除但不是偶数的数的个数。

4.押宝游戏:

开始游戏 -> 投入赌金【一次性投入】 -> 

循环  :押宝【5块钱一次】 -> 开奖  --》中奖/未中奖 --》用户输入是否继续 【当余额为0则自动退出游戏】

5.百钱买百鸡,现有100文钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只,要求:公鸡,母鸡,小鸡都要有,买100只鸡,把100文钱花完,买的鸡是整数。多少只公鸡,多少只母鸡多少只小鸡?