1.1 交换
已知 a的值为"hello",b的值为"world",如何交换a和b的值?
a = "hello"
b = "world"
a,b = b,a
print("a的值为 %s" % a)
print("b的值为 %s" % b)
a,b = b,a 实际上做了两件事:
tuple(b,a) 构成一个由b和a构成的元组、对元组进行拆包,将其元素赋给a,b
注:Python的变量并不直接存储值,而是引用一个内存地址,交换变量时,只交换了引用的地址。
1.2 回文
回文的定义:"回文" 就是正读倒读都一样的。
如奇数个:"98789",这个数字正读是"98789" 倒读也是"98789"。
偶数个数字"3223"也是回文数。
字母 "abcba" 也是回文。
判断一个字符串是否是回文字符串,是打印True, 不是打印False
# 方法一
a = input("请输入一个数字:")
b = a[::-1]
if a == b:
print("该数字是回文数")
else:
print("该数字不是回文数")
Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
b = a[i:j] 表示复制a[i]到a[j-1],以生成新的对象
当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
当j缺省时,默认为len(a), 即a[1:]相当于a[1:len(a)]
当i,j都缺省时,a[:]就相当于完整复制一份a
b = a[i:j:s]表示:i,j与上面的一样,但s表示步进,缺省为1.
所以a[i:j:1]相当于a[i:j]
当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍,即倒序。
# 方法二
a = int(input("请输入一个数字:\n"))
x = str(a)
flag = True
for i in range(len(x)//2):
if x[i] != x[-i - 1]:
flag = False
break
if flag:
print ("%d 是一个回文数!" % a)
else:
print ("%d 不是一个回文数!" % a)
1.3 字符串切割
已知一个字符串为 "hello_world_yoyo", 如何得到一个队列 ["hello","world","yoyo"]
str = "hello_world_bigant"
str1 = str.split("_")
print(str1)
1.4 拼接字符串
# 方法一
lister = ["hello", "world", "yoyo"]
s = "hello_" + "world_" + "yoyo"
print(s)
# 方法二
lister = ["hello", "world", "yoyo"]
strlist = '_'.join(lister)
print(strlist)
1.5替换字符
把字符串 s 中的每个空格替换成"%20"
输入:s = "We are happy."
输出:"We%20are%20happy."
s = "We are happy."
print(s.replace(" ", "%20"))
1.6九九乘法表
打印99乘法表
# 方法一
for i in range(1, 10):
for j in range(1, i+1):
print("%d*%d=%d" % (j, i, j*i), end=' ')
print("")
# 方法二
i = 1
while i<10:
j = 1
while j <= i:
print("%d*%d=%d" % (j,i,j*i), end=' ')
j += 1
print("")
i += 1
1.7字符下标
找出单词 "welcome" 在 字符串"Hello, welcome to my world." 中出现的位置,找不到返回-1
从下标0开始索引
s = "Hello, welcome to my world."
print(s.index("welcome", 0, len(s)))
1.8 统计字符出现的次数
s = "Count, the number of spaces."
print(s.count(" "))
x = "I like to program in Python"
print(x.count(" "))
string.count(str, beg=0, end=len(string))用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
1.9 统计每个字符出现的次数
#方法一:字典推导式
str1 = "ewq4aewtaSDDSFDTFDSWQrtewtyufashas"
result = {i: str1.count(i) for i in str1}
print(result)
#方法二:counter
import collections
str2 = "ewq4aewtaSDDSFDTFDSWQrtewtyufashas"
obj = collections.Counter(str2)
print(obj)
for k, v in obj.items():
print(k, v)
Python 字典 items() 方法以列表返回视图对象,是一个可遍历的key/value 对。
#方法三 利用count
str2 = "ewq4aewtaSDDSFDTFDSWQrtewtyufashas"
for i in set(str2):
print(i, str2.count(i))
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
1.10 打印出排行前三的字符
dd="ewq4aewtaSDDSFDTFDSWQrtewtyufashas"
obj = collections.Counter(dd)
print obj.most_common(3)
1.11 判断字符a含b
'''
判断字符串a="welcome to my world" 是否包含单词b="world"
包含返回True,不包含返回 False
'''
a = "welcome to my world"
b = "world"
if b in a:
print(True)
else:
print(False)
1.12 查找字符首次出现位置
'''
输出指定字符串A在字符串B中第一次出现的位置,如果B中不包含A,则输出-1
从 0 开始计数
A = "hello"
B = "hi how are you hello world, hello yoyo !"
'''
A = "hello"
B = "hi how are you hello world, hello yoyo !"
# if A in B:
print(B.find(A))
# 或者
print(B.index(A))
find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。
1.13判断奇数偶数
'''
给定一个数a,判断一个数字是否为奇数或偶数
a1 = 13
a2 = 10
'''
num = int(input("请输入一个整数:"))
if num % 2 == 0:
print("这是一个偶数")
elif num % 2 == 1:
print("这是一个奇数")
1.14判断一个姓名是否姓王
b = input("输入姓名:")
# 判断字符串以xx开始
if str(b).startswith("王"):
print("姓王")
else:
print("不姓王")
b = input("输入姓名:")
b = input("输入姓名:")
# 判断字符串以xx结尾
if str(b).endswith("三"):
print("姓名以三结尾")
else:
print("姓名不以三结尾")
1.15判断是不是数字
'''
如何判断一个字符串是不是纯数字组成
a = "123456"
b = "yoyo123"
'''
str1 = "123456"
str2 = "Abcd"
str3 = "123Abc"
# 用isdigit函数判断是否数字
print(str1.isdigit())
print(str2.isdigit())
print(str3.isdigit())
# 用isalpha判断是否字母
print(str1.isalpha())
print(str2.isalpha())
print(str3.isalpha())
# isalnum判断是否数字和字母的组合
print(str1.isalnum())
print(str2.isalnum())
print(str3.isalnum())
# 注意:如果字符串中含有除了字母或者数字之外的字符,比如空格,也会返回False
string.isdigit() 如果 string 只包含数字则返回 True 否则返回 False.
string.isalnum() 至少有一个字符并且所有字符都是字母或数字则返回 True 否则返回 False
string.isalpha() 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
1.16字符串大小写转换
'''
将字符串 a = "This is string example....wow!" 全部转成大写
字符串 b = "Welcome To My World" 全部转成小写
'''
a = "This is string example....wow!"
b = "Welcome To My World"
# 全部转成大写
print(a.upper())
# 全部转成小写
print(b.lower())
# 字符串首字母大写
print(a.capitalize())
# 每个单词的首字母大写
print(a.title())
# 大小写互换
print(b.swapcase())
1.17 去掉字符串中空格的方法
'''
将字符串 a = " welcome to my world "首尾空格去掉
'''
a = " welcome to my world "
# 去除字符串开头和结尾的空格
print(a.strip())
# 去除字符串开头的空格
print(a.lstrip())
# 去掉字符串结尾的空格
print(a.rstrip())
# 去除全部空格
'''
1. replace()方法
replace主要用于字符串的替换replace(old, new, count)
'''
print(a.replace(" ", ""))
'''
2.join()方法+split()方法
# join可以将列表每个字符通过前字符串进行拼接,split可以将字符串按指定规则进行切割生成一个新的列表,
不传参默认按空格切割
'''
print(a.split()) # 字符串按空格分割成列表b
print("".join(a.split())) # 使用一个空字符串合成列表内容生成新的字符串
1.18 字符串去重后排序
'''
s = "ajldjlajfdljfddd",去重并从小到大排序输出"adfjl"
1.22 字符串去重保留顺序
s = "ajldjlajfdljfddd",去重保留原来的顺序,输出"adfjl"
'''
s = "ajldjlajfdljfddd"
s1 = list(set(s))
s2 = s1.sort(reverse=False)
s3 = "".join(s1)
print(s3)
1.23画菱形
n = int(input("请输入菱形边长:"))
for i in range(n):
for j in range(n-i-1):
print(" ", end="")
for k in range(2*i+1):
print("*", end="")
print("")
for i in range(n-1):
for j in range(i+1):
print(' ', end='')
for k in range(2*(n-i)-3):
print("*", end="")
print()
1.24 输入一个正整数,判断是几位数
题目 给一个不多于5位的正整数,要求:
一、求它是几位数,
二、逆序打印出各位数字。
a = 12345
s = int(input("请输入一个整数:"))
print(s)
s1 = str(s)
print("您输入的是 %s位数" % len(s1))
print("逆序的结果为:", end="")
for i in range(len(s1)-1, -1, -1): # 切片用法:创建一个与原字符串顺序相反的字符串
print(s1[i], end="")