python之字符串,列表,元组,字典,函数

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";

  1. 输出卡号和密码信息, 格式如下:
    卡号 密码
    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比,请编程序找出三队赛手的名单。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值