python-05-字符串

01-情人节表白代码

import numpy as np
import matplotlib.pyplot as plt

# 生成x坐标 -2到2范围 的 等差数列数组,数组元素一共1500个
x = np.linspace(-2, 2, 1500)

# 上半部分爱心函数线段
y1 = np.sqrt(1 - (np.abs(x) - 1) ** 2)

# 下半部分爱心函数线段
y2 = -3 * np.sqrt(1 - (np.abs(x) / 2) ** 0.5)

# fill_between是填充线段内部的颜色
plt.fill_between(x, y1, color='red')
plt.fill_between(x, y2, color='red')

# 控制x轴的范围
plt.xlim([-2.5, 2.5])

# 生成文本,指定文本位置 ,字体大小
plt.text(0, -0.4, 'I love you!', fontsize=30, fontweight='bold', color='yellow', horizontalalignment='center')

# 去除刻度
plt.axis('off')
plt.show()

缺少模块就:pip install 模块名

02-基础题

# 根据输入的百分制成绩打印`及格` 或者`不及格`,60分以下为不及格

# 1. 使用input接收用户的输入内容
# 2. 使用float内置类,将接收到的字符串转换成为浮点数
# score = float(input('请输入您的成绩:'))
# # 3. 使用一个if...else语句来判断用户是否及格
# if score >= 60:
#     print('恭喜你,及格了!')
# else:
#     print('没及格,你个垃圾')

# 根据输入的年龄打印`成年`或者`未成年`,18岁以下为未成年,如果年龄不在正常范围(0到150岁)内则打印`这不是人!`
# age = int(input('请输入您的年龄:'))
# if 150 >= age >= 0:
#     # 年龄在正常范围
#     if age < 18:
#         print('未成年')
#     else:
#         print('成年')
#     # print('未成年') if age < 18 else print('成年了')
# else:
#     print('这不是人')

# 输入两个整数,如果两个数相减的结果为奇数则输出该结果,否则输出提示信息`结果不是奇数`。
# 一个input接收一次用户的输入,如果想要接收多次用户的输入,使用多个input
# num1 = int(input('请输入一个数字:'))
# num2 = int(input('请再输入另一个数字:'))
# if (num1 - num2) % 2 != 0:
#     print('两个数字相减的结果是奇数')
# else:
#     print('两个数字相减的结果是', num1 - num2)

# 用for循环输出 0到100内所有的奇数。
# for i in range(0, 101):
#     # print(i)  # 打印所有的数字
#
#     # if i % 2 != 0:  # 奇数才打印
#     #     print(i)
#
#     if i % 2 == 0:  # 偶数就不打印
#         continue
#     print(i)

# 使用while循环输出0到100内所有的偶数。[0,100]
j = 0
while j <= 100:  # 0~100
    if j % 2 == 0:
        print(j)
    j += 1

03-进阶题

# 使用循环计算出1到100求和的结果
# result = 0
# i = 0
# while i < 100:
#     i += 1
#     result += i
# print(result)
# r = 0
# for j in range(1, 101):
#     r += j
# print(r)

# 统计100以内个位数是2并且能够被3整除的数的个数
# count = 0  # 定义一个变量来表示个数
# for i in range(1, 101):
#     if i % 10 == 2 and i % 3 == 0:
#         count += 1  # 只要发现了一个符合要求的数字,就把计数器加1
#         print(i)
# print('满足条件的数字的个数是', count, '个')


# 输入任意一个正整数,求它是几位数
# num = int(input('请输入一个整数:'))  # 34282
# count = 0  # 表示个数
# while True:
#     count += 1
#     num //= 10
#     if num == 0:
#         break
# print('您输入的数字是', count, '位数')

# 打印所有的水仙花数
for i in range(100, 1000):  # 456除以10,商是45,余数是6
    ge = i % 10
    shi = i // 10 % 10
    bai = i // 100
    if ge ** 3 + shi ** 3 + bai ** 3 == i:
        print(i)

# 写一个程序可以不断的输入内容,如果输入的内容是exit,打印`程序结束`后结束该程序
# while True:
#     content = input('请输入内容:')
#     if content == 'exit':
#         print('程序结束')
#         break

04-for...else求素数

# 素数也叫质数,除了1和它本身以外,不能再被其他的任何数整除
# 求2到100的合数(1既不是质数,也不是合数;2是质数)
for i in range(2, 101):  # i=105
    for j in range(2, int(i ** 0.5)+1):  # range(2,105)  从2取到104  2  3
        if i % j == 0:  # i 除以某一个数字,除尽了,i是合数
            # print(i, '是合数')
            break  # break放在内循环里,用来结束内循环
    else:
        # for...else语句:当循环里的break没有被执行的时候,就会执行else
        print(i, '是质数')

#int(i/2)这个也行
s=1.6556
print(int(s))  #1

05-假设成立法求素数

# 2-100
for i in range(2, 101):
    # i = 11
    flag = True  # 每次都假设 i 是一个质数
    for j in range(2, int(i ** 0.5) + 1):
        if i % j == 0:
            # 除尽了,说明 i 是个合数
            flag = False
            break
    if flag:  # if flag == True:
        print(i, '是质数')

06-使用计数法求素数

for i in range(2, 101):  # 12
    count = 0  # 假设这个数能被0个数字整除
    for j in range(2, i):  # 2  3   4  6
        if i % j == 0:
            # 除尽了,是合数
            count += 1
    if count == 0:
        print(i, '是一个质数')
    else:
        print(i, '是一个合数,它能被', count, '个数字整除')

07- 求斐波那契数

# 求斐波那契数列中第n个数的值,n是正整数
n = int(input('请输入您要第几个斐波那契数:'))
# 求斐波那契数里第 12 个数
# 1,1,2,3,5,8,13,21,34,55,89,144
num1 = 1
num2 = 1

# 第3个交换1
# 第4个交换2
# 第5个交换3
# 第n个交换n-2
for i in range(0, n - 2):
    a = num1
    num1 = num2
    num2 = a + num2

print(num2)

08-九九乘法表

# j = 0
# while j < 9:
#     j += 1
#     i = 0
#     while i < j:
#         i += 1
#         print(i, '*', j, '=', i * j, end='\t', sep='')
#     print()

for i in range(1, 10):
    for j in range(1, i + 1):
        print(j, '*', i, '=', i * j, end='\t', sep='')
    print()

09-马的问题

# "百马百担"问题:一匹大马能驮3担货,一匹中马能驮2担货,两匹小马能驮1担货,如果用一百匹马驮一百担货,问有大、中、小马各几匹?
# 假设大马有x,假设中马有y,小马  100 - x - y
for x in range(0, 100 // 3 + 1):
    for y in range(0, 100 // 2 + 1):
        if 3 * x + 2 * y + (100 - x - y) * 0.5 == 100:
            print(x, y, (100 - x - y))

10-珠峰问题

# 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)
height = 0.08 / 1000
count = 0
while True:
    height *= 2
    count += 1
    if height >= 8848.13:
        break

print(count)

11-字符串的表示方式

# 在Python里,可以使用一对单引号、对双引号或者一对三个双引号、一对三个单引号
a = 'hello'
b = "good"
c = """呵呵呵"""
d = '''嘿嘿嘿'''

# 如果字符串里还有双引号,外面就可以使用单引号
m = 'xiaoming said :"I am xiaoming"'
n = "I'm xiaoming"
p = """ xiaomig said :"I am xiaoming" """

# 字符串里的转义字符 \

# \'  ==> 显示一个普通的单引号
# \"  ==> 显示一个普通的双引号
# \n  ==> 表示一个换行
# \t  ==> 表示显示一个制表符
# \\  ==> 表示一个普通的反斜线

x = 'I\'m xiaoming'  # \ 表示的是转义字符,作用是对 \ 后面的字符进行转义
y = "xiaoming said:\"I am xiaoming\""
z = 'hello \n world'
print(z)

x1 = '你好\t世界'
print(x1)

x2 = 'good mor\\ning'  # good mor\ning
print(x2)

# 在字符串的前面添加 r 在Python里表示的是原生字符串
x3 = r'hello \teacher'
print(x3)

# 字符串里的转义字符 \

# \'  ==> 显示一个普通的单引号
# \"  ==> 显示一个普通的双引号
# \n  ==> 表示一个换行
# \t  ==> 表示显示一个制表符
# \\  ==> 表示一个普通的反斜线

12-字符串的下标和切片

# 下标我们又称之为索引,表示第几个数据。

# 可迭代对象: str  list  tuple  dict  set  range  都可以便利
# str list tuple 可以通过下标来获取或者操作数据

# 在计算机里,下标都是从 0 开始的。
word = 'zhangsan'  # 字符串:一个一个的字符串在一起
# 可以通过下标来获取或者修改指定位置的数据
print(word[4])

# 字符串是不可变的数据类型
# 对于字符串的任何操作,都不会改变原有的字符串!!!
# word[4] = 'x'

# 切片就是从字符串里复制一段指定的内容,生成一个新的字符串
m = 'abcdefghijklmnopqrstuvwxyz'
print(m[5])  # m[index] ==> 获取指定下标上的数据

# 切片语法  m[start:end:step]
# 包含start,不包含end
# step 指的是步长,理解为间隔。每隔 step-1 个取一次
# step 为负数,表示从右往左获取

print(m[2:9])  # 包含start,不包含end
print(m[2:])  # 如果只设置了start,会"截取"到最后
print(m[:9])  # 如果值设置了end,会从头开始"截取"

# 步长默认为 1
print(m[3:15:2])  # dfhjln
print(m[3:15:1])  # defghijklmno
# print(m[3:15:0])  # 步长不能为0
print('------------------')
# print(m[3:15:-1])  # 没有数据
print(m[15:3:-1])  # ponmlkjihgfe
print(m[::])  # abcdefghijklmnopqrstuvwxyz 从头到尾复制
print(m[::-1])  # zyxwvutsrqponmlkjihgfedcba

# start和end如果是负数,表示从右边数
print(m[-9:-5])  # rstu
# 切片语法  m[start:end:step]
# 包含start,不包含end
# step 指的是步长,理解为间隔。每隔 step-1 个取一次
# step 为负数,表示从右往左获取

13-字符串常见的操作

x = 'abcdefghijklmndsfasdfsadfadl'

# 使用内置函数 len 可以获取字符串的长度
print(len(x))

# 查找内容相关的方法  find/index/rfind/rindex  可以获取指定字符的下标
print(x.find('l'))  # 11
print(x.index('l'))  # 11

print(x.find('p'))  # -1 如果字符在字符串里不存在,结果是 -1
# print(x.index('p'))  # 使用index,如果字符不存在,会报错

print(x.find('l', 4, 9))

print(x.rfind('l'))
print(x.rindex('l'))

# startswith,endswith,isalpha,isdigit,isalnum,isspace
# is开头的是判断,结果是一个布尔类型
print('hello'.startswith('he'))  # True
print('hello'.endswith('o'))  # True
print('he45llo'.isalpha())  # False  alpha字母
print('good'.isdigit())  # False
print('123'.isdigit())  # True
print('3.14'.isdigit())  # False

# alnum 判断是否由数字和字母组成
print('ab12hello'.isalnum())  # True
print('hello'.isalnum())  # True
print('1234'.isalnum())  # True
print('4 - 1'.isalnum())  # False

print('h    o'.isspace())  # False

# num = input('请输入一个数字:')
# if num.isdigit():
#     num = int(num)
# else:
#     print('您输入的不是一个数字')


# replace方法:用来替换字符串
word = 'hello'
m = word.replace('l', 'x')  # replace 将字符串里 l 替换成 x
print(word)  # hello  字符串是不可变数据类型!!!
print(m)  # hexxo   原来的字符串不会改变,而是生成一个新的字符串来保存替换后的结果

14-内容分割相关的操作

# split rsplit splitlines  partition  rpartition

# 字符串类型的数据
x = 'zhangsan-lisi-wangwu-jerry-henry-merry-jack-tony'
# ['zhangsan','lisi','wangwu','jerry','henry','merry','jack','tony']
# 使用split方法,可以将一个字符串切割成一个列表
y = x.split('-')
print(x)
print(y)  # 切割以后的结果就是一个列表

z = x.rsplit('-')
print(z)

print(x.split('-', 2))
print(x.rsplit('-', 2))

# partition 指定一个字符串作为分隔符,分为三部分
# 前面   分隔符   后面
print('abcdefXmpXqrst'.partition('X'))  # ('abcdef', 'X', 'mpXqrst')
print('abcdefXmpXqrst'.rpartition('X'))  # ('abcdefXmp', 'X', 'qrst')

# 获取文件名和后缀名
file_name = '2020.2.14拍摄不要打开.mp4'
print(file_name.rpartition('.'))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老板来片烤面包

君子博学于文,赠之以礼,谢君~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值