Python中的字符串
python中的字符串可以使用’'或者""引起来
定义一个变量,即可引用字符串
a = ‘I love china!!!’
字符串的特性:
索引,切片,重复,连接,成员操作符,for循环
索引
索引号是以0开始
切片
切片 s[start🔚step] 从start0开始到end
重复
s*10 重复10次
连接
成员操作符
for循环
可以使用for循环进行遍历,for循环即就是字符串中的内容
练习一:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左) 读都是一样 的整数。
是用的是字符串的切片
字符串的常用方法
是否是标题,标题是以大写开头:
字符串的特性
出去空格,这里的空格指的是广义的空格,包括\n,\t等。
定义的是广义上的空格。
字符串的判断
[[:digit:]] 数字
[[:alpha:]] 字符
只要有一个元素步满足条件 就返回False
print(‘23123’.isdigit())
print(‘fcafascav’.isalpha())
print(‘dasasasd414#####214’.isalnum())
练习:
变量名定义是否合法:
1.变量名可以由字母 数字 下划线组成
2.变量名只能以字母和或者下划线开头
字符串的对齐
搜索和替换
统计
字符串的分离和连接
小米笔试编程题目
- 题目描述:
给定一个句子(只包含字母和空格), 将句子中的单词位置反转, 单词用空格分割, 单词之间只有一个空格,前>后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”
- 输入描述:
输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
- 输出描述:
对于每个测试示例,要求输出句子中单词反转后形成的句子
- 示例1: ```
- 输入
hello xiao mi- 输出
mi xiao hello
练习题一
设计一个程序,帮助小学生练习10以内的加法
详情:
- 随机生成加法题目;
- 学生查看题目并输入答案;
- 判别学生答题是否正确?
- 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);
count = 0
right = 0
import random
while True:
a = random.randint(0,9)
b = random.randint(0,9)
sum = a + b
print('%d + %d '%(a,b))
SUM = input('请输入结果: ')
if SUM == 'q' and count != 0:
print('您一共计算了%d个题目' % count)
print('您回答正确了%d个题目' % right)
print('您的正确率是: %.2f%%' % ((right / count) * 100))
print(exit)
break
elif SUM == 'q' and count == 0:
print('您还没有进行运算')
print(exit)
break
elif int(SUM) == sum:
print('回答正确')
right += 1
else:
print('回答错误,请重试!!')
count +=1
练习题二
小学生算术能力测试系统:
设计一个程序,用来实现帮助小学生进行百以内的算术练习,
它具有以下功能:提供10道加、减、乘或除四种基本算术运算的题目;
练习者根据显示的题目输入自己的答案,
程序自动判断输入的答案是否正确并显示出相应的信息。
“”"
import random
op = [’+’,’-’,’*’,’/’]
print(random.choice(op))
print('如果想退出,请输入q即可退出')
count = 0
right = 0
import random
for i in range(1,10):
a = random.randint(0,99)
b = random.randint(0,99)
op = ['+', '-', '*', '/']
s = random.choice(op)
print('%d %s %d = '%(a,s,b))
SUM = input('请输入结果: ')
if SUM == 'q':
print(exit)
break
if (s == '+'):
sum = a +b
elif (s == '-'):
sum = a -b
elif (s == '*'):
sum = a * b
elif (sum == '/'):
sum = a / b
if int(SUM) == sum:
print('nice')
right +=1
else:
print('Sorry,Pease try again!!!')
count +=1
percent = (right/count)*100
print('您总共年做了%d道题,回答对了%d道题,正确率为%.2f'%(right,count,percent))
列表
数组:存储同一种数据类型的集合 scores = [89 99 100…]
列表(打了激素的数组):可以存储任意数据类型
list = [1,1.2,True,‘westos’]
print(list)
print(type(list))
列表的特性
练习一
假定有下面这样的列表:
names = [‘fentiao’, ‘fendai’, ‘fensi’, ‘apple’]
输出结果为:‘I have fentiao, fendai, fensi and apple.’
练习二
输入某年某月某日(yyyy-MM-dd),判断这一天是这一年的第几天?
cal = input('请输入日期 yyyy-MM-dd: ')
date = cal.split('-') #拆分日期
year = int(date[0])
month = int(date[1])
day = int(date[2])
arr = [0,31,28,31,30,31,30,31,31,30,31,30,31]
num = 0
if ((year % 4 ==0) and (year %100 !=0) or
(year % 400 ==0)):
arr[2] = 29
for i in range(1,len(arr)):
if month > i:
num += arr[i]
else:
num += day
break
print('天数:',num)
列表元素的增加删除
查看
练习
题目:输入三个整数x,y,z,请把这三个数由小到大输出
列表元素的排序
列表元素的修改
元组的应用场景
a = 1
b = 2
b,a = a,b
print(a) #b,a=(1,2) b=(1,2)[0] a=(1,2)[1]
print(b)
#打印变量
name = ‘westos’
age = 11
t = (name,age)
print(‘name:%s,age%d’ %(name,age))
print(‘name:%s,age%d’ %t)
#元组的赋值:有多少个元素,就用多少个变量接收
t = (‘westos’,10,100)
name,age,score = t
print(name,age,score)
字典
字典的定义:key-value 键值对
工厂函数
d = dict()
print(d,type(d))
d = dict(a=1,b=2)
print(d,type(d))
字典的嵌套
字典的特性
成员操作符和for循环
字典的key和value的增加
删除
查看
练习一
数字重复统计:
1). 随机生成10个整数;
2). 数字的范围[20, 100],
3). 升序输出所有不同的数字及其每个数字重复的次数;
练习二
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;
“”"
s = input('s:')
# 1.把每个单词分割处理
s_li = s.split()
print(s_li)
# 通过字典存储单词和改单词出现的次数
word_dict = {}
for item in s_li:
if item not in word_dict:
word_dict[item] = 1
else:
word_dict[item] += 1
print(word_dict)
练习三
#1. 随机生成100个卡号;
卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),
2. 生成关于银行卡号的字典,
默认每个卡号的初始密码为"redhat";
- 输出卡号和密码信息, 格式如下:
卡号 密码
6102009001 000000
函数
如何定义一个函数
def hello():
print(‘hello’)
print(‘python’)
#通过函数名来调用函数
hello()
hello()
#函数里面嵌套函数
def westos(): ##函数一
print(‘is westos’)
def python(): ##函数二
print(‘is python’)
python()
westos()
#定义函数的时候的变量 较形参(形参名可以任意)
def welcome(a):
print(‘hello’,a)
#真实的数据信息,调用函数的时候传递的参数较实参
welcome(‘tom’)
welcome(‘lily’)
参数
参数:形参 实参
形参:位置参数 默认参数 可变参数 关键字参数
位置参数:形参和实参数量必须保持一致
def getInfo(name,age): # 按照位置传递参数
print(name,age)
getInfo(‘westos’,11)
getInfo(11,‘westos’)
getInfo(age=11,name=‘westos’)
默认参数
def mypow(x,y=2):
print(x**y)
mypow(2,3)
mypow(2)
可变参数
def mysum(*args):
print(*args)
print(args)
sum = 0
for item in args:
sum += item
print(sum)
nums = [1,2,3,4]
nums1 = (1,2,3,4)
nums2 = {1,2,3,4}
mysum(1,2,3,4,5)
参数解包 在参数名前加*
mysum(*nums)
mysum(*nums2)
关键字参数
**kwargs是一个字典 可以传递任意多个key-value
def getStuInfo(name,age,*kwargs):
print(name)
print(age)
print(kwargs)
d = dict(a=1,b=2)
如果要对字典进行解包 一个 获取所有的key值
print(*d)
getStuInfo(‘westos’,11,sex=1,score=100)
返回值
返回值:函数运行的结果 还需进一步操作 就给函数一个返回值
return用来返回函数的执行结果,如果函数没有返回值 默认返回None
一旦遇到return函数执行结束 后面的代码不会执行
多个返回值的时候,python会帮助我们封装成一个元组类型
如果我们不定义值,则使用默认值
作用域
局部变量:在函数内部定义的变量 只在函数内部起作用 函数
执行结束后 变量会自动删除
“”"
a = 1
print('outside:',id(a))
def fun():
global a #声明a为全局变量
a = 5
print('inside:',id(a))
fun()
print(a)
print(id(a))
练习一
求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字
while True:
a=int(input('输入a:'))
if len(str(a))==1:
count = int(input('输入相加次数:'))
def add(a,count):
'''
:param a: #a为数字
:param count: #输入相加次数
:return:
'''
list_new = []#建立空列表
s = 0#给s赋值0
a=str(a)#将a转化为字符串
for i in range(1,count+1):
list_new.append(int(a*i))
print(list_new[i-1],end=" ")
if i<count:
print("+",end=" ")
for j in list_new:
s += j
print( '=',s)
#return s
add(a,count)
else:
print('a输入错误')
练习二
:判断101-200之间有多少个素数,并输出所有素数
练习三:
3.题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%;
高于100万元时,超过100万元的部分按1%提成;
从键盘输入当月利润I,求应发放奖金总数?
money = float(input("请输入当月利润,单位为万元:"))
bonus = 0
li = [100, 60, 40, 20, 10, 0]
bi = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
for i in range(6):
if money > li[i]:
cmoney = money - li[i]
bonus = bonus + cmoney * bi[i]
# money = money - cmoney
money = li[i]
print("当月应发放奖金总数为%s万元" % bonus)
题目:两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙队为x,y,z三人。
已抽签决定比赛名单。有人队员打听比赛的名单。
a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。