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('.'))