python文件打包exe(pyinstaller)

python文件打包exe(pyinstaller)

对于写好的python文件,我们怎么将其移植到其他电脑上也可以正常运行呢?

解决上述问题的方法主要有2种:

在其他电脑上安装python环境(如果python文件使用了第三方库,还需安装第三方库)
将写好的python文件打包为exe文件
对于*种方法,你只需要参考自己电脑上的环境安装其他电脑上安装相同环境即可。

对于第二种方法,推荐采用pyinstaller进行python文件的exe格式打包。python文件打包exe(pyinstaller)流程如下:

创建虚拟环境(由于pyinstaller在打包python文件时,会将环境中所有的库进行打包,这其中也会将.py文件中没有涉及的库,因此创建一个虚拟环境,手动安装必要的库,可以有效降低打包后exe的大小)
在虚拟环境中安装.py文件所依赖的库(pip install xxx)
在虚拟环境中安装pyinstaller库(pip install pyinstaller),需要注意一定要在虚拟环境中安装pyinstaller,如果没有安装直接打包那么就使用本地(即虚拟环境外)的pyinstaller,这样会把本地所有的库全部打包,导致生成的exe文件很大且运行易出错。
使用pyinstaller指令进行python文件打包(推荐使用pyinstaller -F xx.py 文件)
在实际打包过程中若会出现迭代溢出问题(如图1),请进入打包文件生成目录,打开.spec文件,添加相关代码,设置迭代次数,具体设置如图2所示。
若执行了步骤5,则在步骤5修改完成后,输入pyinstaller xxx.spec文件完成打包
为避免不对后续新的python文件的运行造成影响,建议在完成打包后及时关闭虚拟环境

图1  迭代溢出问题

%title插图%num

import sys
sys.setrecursionlimit(10000)
图2  迭代次数设置

*******打包完成后直接运行exe文件即可,若提示某个库缺失,则在虚拟环境中pip install安装相应的库即可。**************************************

******补充一下pyinstaller打包怎么设置exe图标******
1、将图标(.ico文件)放在.py文件同目录下,若无图标文件,可通过该网站进行普通图片转ico文件

2、打包时设置图标在指令行输入  pyinstaller -F –icon=test.ico test.py (需要注意ico文件必须与py文件在同一目录,此外当前目录应为虚拟环境下的py文件目录,否则会报错)

*后,欢迎大家交流、关注、点赞、收藏、转发!

 

iOS实现App之间的分享

我们在iOS平台上想要实现不同App之间的内容分享一般有几种常用方式:
*种是通过AirDrop实现不同设备的App之间文档和数据的分享;
第二种是给每个App定义一个URL Scheme,通过访问指定了URL Scheme的一个URL,实现直接访问一个APP;
第三种是通过UIDocumentInteractionController或者是UIActivityViewController这俩个iOS SDK中封装好的类在App之间发送数据、分享数据和操作数据;
第四种是通过App Extension,在iOS 8的SDK中提供的扩展新特性实现跨App的数据操作和分享;
还有一种集成第三方SDK实现的有限个App的数据分享,比如社交平台(QQ,微信,新浪微博等)给我们提供的官方SDK,或者是集成了多个社交平台的ShareSDK组件和友盟分享组件等。
谈谈苹果原生提供的基于iOS SDK的分享技术,同时推荐俩篇苹果开发者中心的文档:Inter-App Communication和Document Interaction Programming Topics for iOS。
谈一下如何通过UTI让我们的App支持分享。
原理
参考详解苹果提供的UTI(统一类型标识符)这篇文章中,详细地讲解了一下UTI(Uniform Type Identifier),一套苹果给我们提供用来在基于Cocoa和Cocoa Touch应用程序中识别实体内容类型的规范,而关于实现内容关联的技术也正是基于这套规范。在iOS和Mac OS开发中,苹果给我们提供了注册文档类型的接口,而这种注册的文档类型是全局的,系统中所有的应用程序和服务都可以侦测到。因此我们通过这个底层侦测,可以使用其他可选的第三方App来预览我们的App中不支持的文档,而且我们还可以通过这个接口在我们的App中打开并处理第三方App的文档。

如果我们的App可以处理某些类型的实体内容,那么我们就可以在我们项目中的Info.plist文件中进行注册。关于使用哪种类型和UTI,就要参考我在“详解苹果提供的UTI(统一类型标识符)“这篇文章中的讲解。当一个第三方App通过苹果的底层侦测技术检查有哪些App可以处理它所指定的内容类型时,如果我们的App已经注册了这种类型,那么我们的App图标就会显示在其中,并且作为我们自己的App的一个入口。
主要技术
主要应用到这种底层侦测的技术有iOS SDK中给我们提供的UIDocumentInteractionController、UIActivityViewController 和Quick Look 框架。此外,在iOS 8中,苹果又给开发者提供了App Extension,一种更高大上的方式在App之间的实现分享内容。关于UIDocumentInteractionController、UIActivityViewController、Quick Look 框架以及App Extension的细节,我计划在后面的文章中详细讲解。这篇文章,我们主要是来谈谈如何注册我们App可用的文档类型以及简单使用我们的App来处理第三方App分享的内容。

注册可用类型
我们需要在info.plist文件中,添加一个新的属性CFBundleDocumentTypes(实际上输入的是”Document types”),这是一个数组类型的属性,意思就是我们可以同时注册多个类型。而针对数组中的每一个元素,都有许多属性可以指定,详细的属性列表我们可以从官方文档上找到: Core Foundation Keys —- CFBundleDocumentTypes。这里列举我们在做iOS开发时常用的属性
%title插图%num
– CFBundleTypeName(“Icon File Name”)
字符串类型,指定某种类型的别名,也就是用来指代我们规定的类型的别称,一般为了保持唯一性,我们使用UTI来标识。
– CFBundleTypeIconFiles
数组类型,包含指定的png图标的文件名,指定代表某种类型的图标,而图标有具体的尺寸标识:

|Device |Sizes |
|:------|:---------|
|iPad |64 x 64 pixels, 320 x 320 pixels|
|iPhone and iPod touch|22 x 29 pixels, 44 x 58 pixels (high resolution)|

 

  • LSItemContentTypes(“Document Content Type UTIs”)
    数组类型,包含UTI字符串,指定我们的应用程序所有可以识别的类型集合
  • LSHandlerRank(“Handler rank”)
    字符串类型,包含Owner,Default,Alternate,None四个可选值,指定对于某种类型的优先权级别,而Launcher Service会根据这个优先级别来排列显示的App的顺序。优先级别从高到低依次是Owner,Alternate,Default。None表示不接受这种类型。
    而当我们添加完所有属性后,开始运行我们的程序,然后再回到我们的Info界面,就会看到Document types这个列表已经发生了变化,这就证明我们成功的注册好了App可用的类型。
    %title插图%num

打开第三方应用
我们在上面的步骤中注册好了我们的App可以识别的类型,现在我们可以打开一个使用UIDocumentInteractionController或者是Quick Look框架来展示内容的第三方App,这里以iPhone 上的QQ程序为例。

我们在上面的注册步骤中,注册的LSItemContentTypes仅包含了public.data这个UTI。所以我们先从QQ应用程序的我的文件中,打开不同类型的文件进行对比,大家可以看下图我的文件列表中包含俩种类型的文件,一种是.jpg扩展名的图片文件,一种是.pdf扩展名的文档文件。
%title插图%num
%title插图%num
当我打开一个图片文件进行预览时,点击其他应用打开,就可以在App列表中看到我们的App图标。简单介绍一下这个页面,*行是苹果在iOS 7之后给我们提供的使用AirDrop在iPhone、iPad或iPod Touch设备之间通过iCloud共享内容的一种方式。第二行是通过文档类型关联技术识别的App的列表。第三行是通过文档关联技术识别的Action的列表,Action表示对文档可进行的操作,如复制,打印等。
程序回调
当我们通过上面步骤,成功地显示了我的app图标之后,点击图标,我们就可以跳转到我的应用中,而苹果在iOS SDK中给我们提供的接收回调的方法在iOS 9之后做出了改变,因此我们需要针对不同的设备版本做出改变:
%title插图%num

%title插图%num

%title插图%num

python求素数

python求素数

做了一个python的关于求素数的代码,很简单,新手可以参考一下,可能有很多的不足,还请指正。菜鸟勿喷哈哈哈。

def math1(num1, num2):
amount = 0
for num in range(num1, num2):
judgement = False
i = 2
while i < num:
if num % i == 0:
break
i += 1
else:
judgement = True
if judgement:
amount += 1
print(“所给范围内素数个数为”, amount)

def math2(num):
i = 2
while i < num:
print(num, “是质数”)
break
else:
print(num, “不是质数”)

def select(inputer):
try:
num = int(inputer)
math2(num)
except:
list = inputer.split(‘-‘)
num1 = int(list[0])
num2 = int(list[1])
math1(num1, num2)

while True:
inputer = input(“给我一个范围我帮你求有几个素数。\n(要求格式为:\n1.a-b,注意b不包含其中\n2.a,即判断所给数字是否为素数)\n”
“注意:输入d退出操作”)
if inputer==’d’:
print(“”)
print(“谢谢使用!”)
break
print(“”)
select(inputer)
print(“”)

简易名片管理系统

Python:简易名片管理系统

Python:简易名片管理系统
功能需求
缺点(待改进)
话不多说,上代码!
主程序
函数文件
执行结果
功能需求
用户输入数字选择要进行的操作
添加名片
删除名片
修改名片
查询名片
显示所有名片
退出系统
缺点(待改进)
数据未保存到后台,添加的数据仅限当次运行程序时使用

话不多说,上代码!
主程序
# coding=utf8
from method import *
# 导入定时器是为了方便观察每次操作的结果
from time import sleep

cards = []
# 让这个程序无限循环,直到用户想要其终止
while True:
sleep(1)
menu()
ope_num = input(‘请输入要进行的操作(1-6): ‘)
if ope_num == ‘1’:
addinfo(cards)
elif ope_num == ‘2’:
delinfo(cards)
elif ope_num == ‘3’:
updateinfo(cards)
elif ope_num == ‘4’:
searchinfo(cards)
elif ope_num == ‘5’:
showinfo(cards)
elif ope_num == ‘6’:
sure = input(‘你确定要退出系统吗(YES/NO)’)
if sure.upper() == ‘YES’:
break
else:
print(‘输入错误,请重新输入!!!(数字1-6)’)

函数文件

# 定义一个menu方法
def menu():
print(‘——————\n’
‘\t名片管理系统\n’
‘1:添加名片\n’
‘2:删除名片\n’
‘3:修改名片\n’
‘4:查询名片\n’
‘5:显示所有名片\n’
‘6:退出系统\n’
‘——————‘)

# 添加名片
def addinfo(lists):
# 定义一个字典,存放这个名片的信息
info = {}

# 获取姓名
def getname():
name = input(‘请输入姓名: ‘)

# 判断姓名是否由 数字、字母、数字和字母 组成,即:不能包含标点符号和空格,不能为空
# 如果不符合要求,提示检查,并重新输入
# 一直提示用户输入,直到符合要求
while name.isalnum() != True:
print(‘请检查输入!!! (不能包含标点符号和空格,不能为空) ‘)
name = input(‘请输入姓名: ‘)

return name

# 获取手机号
def getphone():
phone = input(‘请输入手机号: ‘)

# 判断手机号是否由 11位数字 组成
# 如果不符合要求,提示检查,并重新输入
while (len(phone) != 11) or (phone.isdigit() != True):
print(‘请检查输入!!! (由11位纯数字组成,不能为空) ‘)
phone = input(‘请输入手机号: ‘)

return phone

# 获取QQ号
def getqq():
qq = input(‘请输入QQ号: ‘)

# 判断QQ号是否由 5-10位数字 组成
# 如果不符合要求,提示检查,并重新输入
while ((len(qq) < 5) or (len(qq) > 10)) or (qq.isdigit() != True):
print(‘请检查输入!!! (由5-10位纯数字组成,不能为空) ‘)
qq = input(‘请输入QQ号: ‘)

return qq

# 如果该名片的序号为,列表长度+1
info[‘num’] = len(lists) + 1

# 通过调用其他函数获取对应信息
info[‘name’] = getname()
info[‘phone’] = getphone()
info[‘qq’] = getqq()

# 将该字典存入名片列表中
lists.append(info)

print(‘添加成功!’)
showinfo(lists)

# 输出所有名片列表
def showinfo(lists):
print(‘序号\t姓名\t\t手机号\t\tQQ号’.ljust(30))
for lis in lists:
for value in lis.values():
print(value, end=’\t’)

print(‘\n’)

# 删除名片
def delinfo(lists):
del_name = input(‘请输入您需要删除名片的姓名: ‘)
flag = True
for lis in lists:
if lis[‘name’] == del_name:
lists.remove(lis)
print(‘删除成功!’)
showinfo(lists)
flag = False
break

if flag == True:
print(‘名片不存在!!!’)

# 修改名片
def updateinfo(lists):
upd_name = input(‘请输入您需要修改名片的姓名: ‘)
flag = True
for lis in lists:
if lis[‘name’] == upd_name:
lis[‘name’]=input(‘请输入新姓名: ‘)
lis[‘phone’]=input(‘请输入新手机号: ‘)
lis[‘qq’]=input(‘请输入新QQ号: ‘)
print(‘修改成功!’)
showinfo(lists)
flag = False
break

if flag == True:
print(‘名片不存在!!!’)

# 查询名片
def searchinfo(lists):
se_name = input(‘请输入您需要查询的姓名: ‘)
flag = True
for lis in lists:
if lis[‘name’] == se_name:
print(‘序号\t姓名\t\t手机号\t\tQQ号’.ljust(30))
for value in lis.values():
print(value, end=’\t’)

print(‘\n’)
flag = False
break

if flag == True:
print(‘名片不存在!!!’)

执行结果

%title插图%num
如有不足之处,还请各位大佬多多指点~

分享一下自己的手机从ios14降级回ios13.5.1,可以保存资料哦

关于ios14降级后点击图片和网页分享页面出现空白的情况
需要还原系统设置,这样子会重置当前的所有设置(不会清除数据)。

通用—还原—还原所有设置(会重启)

%title插图%num

下面是修复问题后的样子

%title插图%num
升级ios14测试版
6月22号凌晨ios14测试版推出后,上午立马给我的小7装上尝尝鲜。
想要尝试的请下载描述文件,iphone和ipad通用。

https://www.firedev.xyz/14/iOS_iPadOS_14_AppleSeed_Profile.mobileconfig

注意:使用Safari浏览器(iphone自带的)

ios14主要的不同点是:
App资源库,可以智能分类
小组件,主屏幕和负一屏
画中画,这个实测仅限apple TV可以使用
接下来的一段时间让我深刻体会到了什么是测试版,噩梦开始了
手机发热(堪比某米)
掉电巨快
有时莫名的卡顿
系统占用内存的变大
*让我受不了的还是前面两点
ios14降回ios13.5.1
昨天晚上实在是受不了,决定倒退系统

准备工作
itunes(用来备份手机和还原)
ios13.5.1固件包
1、备份
建议啊,icloud基本备份一下!!!!!!
微信和QQ的聊天记录备份,可以先备份到电脑上,双重保险。
由于 iOS 系统限制,跨版本降级会导致设备数据丢失,理论上从 iOS 14 备份的数据也无法恢复至 iOS 13 系统,你现在用爱思助手或者 iTunes 备份的数据,降回 iOS 13 是无法恢复的。

1.1、首先,在 iOS 14 系统下通过 iTunes 完整备份你的 iPhone 资料。

%title插图%num

如果找不到这个页面,请点击这个手机小图标

%title插图%num
1.2、备份完成后,打开刚刚备份的文件
windows:C:Users/用户名/AppData/Roaming/Apple Computer/MobileSync/Backup

打开*新的备份文件夹,用记事本/文本编辑工具打开info.plist
(文件被删除了,就不上图了)

Ctrl+F 查找Product Version

在这个字段的下一行就是关于IOS备份的版本号了,因为是在ios14下备份的嘛,这个就是14了

<kev>Product Version</kev>
<string>14.0</string>
<key>Serial Number</key>

把中间的14.0修改为13.5.1,也就是要降级的系统版本。注意啊,这个版本号千万不要写错!!!!!
2、固件包
2.1、在爱思助手官网上下载相应的固件包
链接地址

%title插图%num
3、使用itunes进行降级
打开 iTunes,按住 shift(windows)键,点恢复 iPhone,在弹出窗口中选择下载好的 iOS 13.5.1 系统固件等待刷机完成即可

%title插图%num
实测
除了邮件账户需要重新添加,别的数据都在。(也可能是icloud有基本备份)
成功了的小伙伴帮我点一下赞噢

80行代码实现简易版摩斯码编译器

80行代码实现简易版摩斯码编译器

@80行代码实现简易摩斯码翻译器

dict1={ #字母转换成摩斯码
“A”:”01″,”B”:”1000″,”C”:”1010″,”D”:”100″,”E”:”0″,”F”:”0010″,”G”:”001″,”H”:”0000″,”I”:”00″,”J”:”0111″,”K”:”101″,”L”:”0100″,”M”:”11″,
“N”:”10″,”O”:”111″,”P”:”0110″,”Q”:”1101″,”R”:”010″,”S”:”000″,”T”:”1″,”U”:”001″,”V”:”0001″,”W”:”011″,”X”:”1001″,”Y”:”1011″,”Z”:”1100″,
“1”:”01111″,”2″:”00111″,”3″:”00011″,”4″:”00001″,”5″:”00000″,”6″:”10000″,”7″:”11000″,”8″:”11100″,”9″:”11110″,”0″:”11111″,
“?”:”001100″,”/”:”10010″,”——”:”100001″,”.”:”010101″
}
dict2 = {k:v for k,v in zip(dict1.values(),dict1.keys())} #dict1键值对互换 摩斯码转换成字母

def main():

print(“输入规范:”)
print(“(0->’.’)\n(1->’——’)”)
print(“———————————————-“)
for i in range(0,1000):
print(“\n功能选择(大写字母):1.翻译摩斯码 2.生成摩斯码:”)
a = int(input())
if a==1 or a==2:
print(“输入:”)
str = input()
#print(str)
#print(dict[‘A’])
print(“翻译结果”)
if a==2:
transla_alpha(str)
print(‘\n\n\n’)
elif a==1:
transla_morse(str)
print(‘\n\n\n’)
else:
print(“输入有误,请重新选择”)
return 0

def transla_morse(str): # 将摩斯密码翻译成单词
#将字符串根据空格拆分
try:
temp = str.split(‘ ‘) #列表
for i in temp:
temp1 = ”.join(i) #转换成字符串,准备进行切割

#将字符串跟据”/”拆分,并存进列表
alpha_list = temp1.split(‘/’)
#print(alpha_list)
for j in alpha_list:
print(dict2[j],end=”)
print(”,end=’ ‘)

#print(alpha_list)
except :
print(“输入有误,请重新选择”)

def transla_alpha(str):
try:
word = str.split(‘ ‘) #将句子根据空格拆分成单词
for i in word:
alphas = list(i) #将单词拆分成字母
for j in alphas:
if j ==alphas[-1]:
print(dict1[j],end=”)
else:
print(dict1[j],end=’/’)
print(”,end=’ ‘)
#print(alpha)
except :
print(“输入有误,程序结束”)

#print(word)

if __name__ ==”__main__”:
main()

程序运行结果

%title插图%num
代码实现的是简易版功能 BUG较多 还有很多地方等待完善

【ios】swift教程

学习swift地址
https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html
和其他语言比起来,语法层次确实有些不一样的地方。

在wwdc2019上看到了苹果公司关于swiftui的介绍,感觉这就是未来。
Parentheses()
brackets[]
braces{}

Swift编程语言简介
Swift命令行操作

1 Swift defines away large classes of common programming errors by adopting modern programming patterns:
2
3 Variables are always initialized before use.
4 Array indices are checked for out-of-bounds errors.
5 Integers are checked for overflow.
6 Optionals ensure that nil values are handled explicitly.
7 Memory is managed automatically.
8 Error handling allows controlled recovery from unexpected failures.

A swift tour
下面的内容如果你有不理解的请不要太过于悲观,我们将会在以后继续学习

Simple Values
let 定义常量
var 定义变量

Control Flow
Use if and switch to make conditionals, and use for-in, while, and repeat-while to make loops. Parentheses around the condition or loop variable are optional. Braces around the body are required.

1 if true {
2 print(“this is true”)
3 } else{
4 print(“this is not true”)
5 }
6 var tmp = “”
7 switch tmp{
8 case “1”:
9
10
11
12
13
14 }
15
16 for i in [1, 3, 5,7,9]{
17
18 }
19 for i in 1..<5{
20 print(i)
21 }
22 for i in 1…5{
23 print(i)
24 }

 

1 while condition {
2
3 }

 

1 repeat {
2     print(“至少执行一次”)
3 }while 2 < 1
4

函数和闭包
By default, functions use their parameter names as labels for their arguments. Write a custom argument label before the parameter name, or write _ to use no argument label.

1 func greet(person: String, day: String) -> String {
2     return “Hello \(person), today is \(day).”
3 }
4 greet(person: “Bob”, day: “Tuesday”)

对象和类

实例话一个类

Enumerations and Structures
Protocols and Extensions
Error Handling
异常捕获

腾讯云虚拟机如何发邮件?

cajp0208 · 184 天前 · 3258 次点击
这是一个创建于 184 天前的主题,其中的信息可能已经有所发展或是发生改变。
腾讯云虚拟机如何发邮件?需求不大,偶尔一天发一两封的样子
虚拟 邮件 腾讯 样子24 条回复 • 2020-10-09 16:18:39 +08:00
chinvo 1
chinvo 184 天前 via iPhone
发工单开 25
qzy168 2
qzy168 183 天前
发工单开 25 端口。

腾讯云轻量和限时秒杀活动部分云主机配置与价格: https://v2ex.com/t/711197
TimePPT 3
TimePPT 183 天前 via Android
https://sendcloud.sohu.com/price.html
sendcloud,一天 10 封免费额度
815979670 4
815979670 183 天前 ❤️ 1
阿里云一天 100 封 免费额度
opengps 5
opengps 183 天前
怎么 1,2 楼上来就是开 25 端口?解决问题不一定必须要自建一套邮局,2 楼也犯不着非得引导付费渠道
大部分邮箱都支持客户端发邮件的,自己写程序发送也不是难事
hefish 6
hefish 183 天前
自己调用 qqmail 的 smtp 不行吗?
solos 7
solos 183 天前
试下这个 https://www.hedwi.com dkim 、spf 、dmarc 、反向解析都做了
natashahollyz 8
natashahollyz 183 天前 via iPhone
@qzy168 境外能打折吗?非大陆就行,不想备案
ShallowAi 9
ShallowAi 183 天前 via Android ❤️ 1
腾讯企业邮箱 免费 100 封 /日 不需要开 25 端口
用他的 smtp 就行
hancc 10
hancc 183 天前
用 465 端口

EminemW 11
EminemW 183 天前 via iPhone
开锤子端口,写个脚本发邮件不就得了
vuuv 12
vuuv 183 天前 via Android
@opengps #5 搜了下,好像是因为滥发问题,所以国内外云服务商都选择默认全局把出方向的 25 端口封了。也都可以申请解封。
opengps 13
opengps 183 天前 via Android
@vuuv 差不多。域名,自建邮局等成本很低,所以滥发邮件的问题很严重
unclemcz 14
unclemcz 183 天前
@815979670 阿里邮件推送每天有 200 封免费额度;
@hefish 我被 qq 邮箱封过 smtp,绑定了已备案域名,日均十来封的样子发了 1 年左右,用于自己网站用户注册后发邮件提醒注册成功,然后有一天突然就 550 Mail content denied,发信给腾讯客服( mailteam@qq.com ),客服让我提供日志,我提供了错误日志,然后再也没有回复过我;后切换到阿里云邮件推送,至今为止还算稳定。
mooyo 15
mooyo 183 天前
找个域名绑定到腾讯企业邮箱,然后自己给自己分配账号就可以用他们的接口发了吧
mooyo 16
mooyo 183 天前
@mooyo 似乎有 1000 封的免费额度 可以自己看看具体的价目
SenLief 17
SenLief 183 天前 via Android
自建邮局不值得,因为都会被编辑为垃圾。如果量少就用免费的,比如 mailgun 。
hanguokai 18
hanguokai 183 天前
为了防止发垃圾邮件(以及影响 IP 声誉),很多云平台都封了 25 端口,比如 Google Cloud 在文档中就明确说了这个问题 https://cloud.google.com/compute/docs/tutorials/sending-mail 。所以不能在虚拟机上用 SMTP 发邮件。一般是使用非 SMTP 的 REST API 接口发邮件。有 mailgun 这些独立的 email api 服务提供商,另外很多云平台(比如 AWS 、阿里云)本身也提供 email api 服务,腾讯云其实也有这个服务 https://cloud.tencent.com/product/ses 。
CFM880 19
CFM880 183 天前
apt install libnss3-tools
mkdir .certs
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > .certs/qq.crt
certutil -A -n “GeoTrust SSL CA” -t “C,,” -d .certs -i .certs/qq.crt
certutil -A -n “GeoTrust Global CA” -t “C,,” -d .certs -i .certs/qq.crt
certutil -L -d .certs

cd .certs
certutil -A -n “GeoTrust SSL CA – G3” -t “Pu,Pu,Pu” -d ./ -i qq.crt

编辑配置信息 /etc/s-nail.rc
set from=xxxxxxxx@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=xxxxxxx@qq.com
# 这个去开启 QQ 邮箱的 POP3 会有一串码
set smtp-auth-password=xxxxxxxx
set smtp-auth=login
set ssl-verify=ignore
# 上面生成的 cert.sh 文件路径
set nss-config-dir=/root/crontab/.certs

发送邮件
mailx -s “xx 主题” xxxx@gmail.com xxxx@163.com xxxx1@163.com < message.txt

这样应该是 OK,开放 465 端口后,我们用阿里云是可以发送邮件的
Tink 20
Tink 183 天前
25 端口必须打开才能用 smtp 发吧
BAOryoo 21
BAOryoo 183 天前
@natashahollyz 现在海外服务器都是有活动 也很优惠的 海外服务器不需要备案 可以加我 v ; MTc2MjAzODQ2Mjk=
qzy168 22
qzy168 183 天前
@natashahollyz 也有的。可以联系 V (base64):am9veXVuY29t
leffz 23
leffz 183 天前
腾讯云邮件推送操作步骤: https://curl.qcloud.com/JCAHEoK8
Mashirobest 24
Mashirobest 182 天前 via Android
@Tink 好像选 ssl 可以换成 994 之类的端口(不同的邮箱可能不同)

iOS开发之Swift教程01-Swift基础

【主要内容】

1.关于Swift

2.Hello World

3.常量和变量

4.类型标注

5.常量和变量的命名

6. 输出常量和变量
7.注释

8.分号

一、关于Swift

苹果在2014年WWDC(苹果开发者大会)发布了Swift,用于编写iOS,Mac OS X和watchOS应用程序。Swift 采用安全的编程模式并添加了很多新特性,而且对于熟悉OC人开发者来说学习Swift也很简单。是不是已经迫不及待要体验Swift了。

二、Hello World

在学习计算机每一门语言的时候*个程序肯定都是Hello World,Swift也一样,下边来看一下Swift如何打印Hello World。print(“Hello World”)
就是这么简单不需要多余的字符或者导入一个库。重要的事情说三遍:在Swift中不需要在每句的结尾加分号!在Swift中不需要在每句的结尾加分号!在Swift中不需要在每句的结尾加分号!

三、常量和变量

常量和变量应该是每一门语言里边都存在的。常量就是在定义之后就不可以再改变的量,而变量就是定义之后还可以改变他的值。那么在Swift中使用let来声明常量,使用var来声明变量。注意常量和变量必须在使用前声明。

下边用常量定义你的身高,用变量定义你的年龄:

//定义常量用let 用常量定义身高
let height = 187

//定义变量用var 变量定义年龄
var age = 35
age = 36
上边声明一个你的身高的常量height,并给它初值187,因为人的身高到一定年龄后是不会再变的。有声明一个你的年龄的变量age,赋初值35,因为年龄每年是可以变化的,今年35岁明年就36岁。
你也可以同时定义多个常量或者变量,只需要用逗号隔开:

//同时定义多个常量和变量
let a = 10, b = 27, c = 58
var d = 3.14, e = 6.28, f = 5.28

注意:

在Swift中如果你声明变量而没有重新改变变量的值,那么编译器会警告你:你的变量XXX永远不会改变,建议你使用let声明成常量,如图:

%title插图%num

四、类型标注

当你声明变量或者常量的时候可以加上类型标注(type annotation),说明变量或者常量中要储存的值的类型。格式如下:

//类型标注格式:
//变量/常量 变量名/常量名:类型 = 初始值
let number: Int = 1250
var name: String = “Aventador”
name = “Ferrari”
跟普通定义不同的是,带有类型标注的声明需要在变量名/常量名后边加上一个冒号,冒号后边是类型说明。
用类型标注同样可以同时定义多个变量:

//类型标注同时定义多个变量
var carName,carBrand,carHeight: String
注意:
在Swift中一般很少去写类型标注,因为Swift是一门安全的语言,他有类型安全和类型推断,这个会在后边提到。如果初始化声明的时候没有标注类型,系统会自动推断出变量的类型。

五、常量和变量的命名规则

5.1 你可以用任何的Unicode字符命名

5.2 不能包含数学符号、箭头、保留的(或者非法的)Unicode码位

5.3 不能用连线和制表符

5.4 不能以数字开头,但是可以再名字其他地方出现

5.5 不能重复声明变量名、常量名

你可以像下边这样命名:

%title插图%num

六、输出常量、变量

在Swift中可以用  print(items : Any)函数来输出当前常量或者变量的值:

%title插图%num

Swift 用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift 会用当前常量或变量的值替换这些占位符。

将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义:

print(“我的*车是\(_car)”)

七、注释

Swift中注释跟OC基本一样,但是Swift要比OC功能更强。可以使用多行注释嵌套,在OC中是不可以的,如图:

%title插图%num

八、分号

大部分编程语言在每条语句结尾的地方都需要加上分号表示结束。但是在Swift中不强制大家必须写分号,不写没有任何问题,但是写了也不错。

但是有一种情况必须写分号,就是想要在一行中执行多条语句的时候,如图:

%title插图%num

 

四平方和

四平方和 (Python 实现)

题目:

四平方和定理,又称为拉格朗日定理:
每个正整数都可以表示为至多4个正整数的平方和。
如果把0包括进去,就正好可以表示为4个数的平方和。
5 = 0^2 + 0^2 + 1^2 + 2^2
7 = 1^2 + 1^2 + 1^2 + 2^2
对于一个给定的正整数,可能存在多种平方和的表示法。
要求你对4个数排序:
0 <= a <= b <= c <= d
并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,*后输出*个表示法
程序输入为一个正整数N (N<5000000)
要求输出4个非负整数,按从小到大排序,中间用空格分开
例如,输入:
5
则程序应该输出:
0 0 1 2
再例如,输入:
12
则程序应该输出:
0 2 2 2
再例如,输入:
773535
则程序应该输出:
1 1 267 838

代码:

n=int(input())
x=int((n*0.5)//1)
for a in range(x+1):
for b in range(x+1):
for c in range(x+1):
for d in range(x+1):
if n==a**2+b**2+c**2+d**2:
print(a,b,c,d)
exit()

结果:

%title插图%num

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速