美文网首页
有趣的数论 欧拉为什么不摘帽子

有趣的数论 欧拉为什么不摘帽子

作者: Python_Camp | 来源:发表于2022-06-09 16:56 被阅读0次

为什么欧拉从不脱帽。有没有注意到在他找到第一份工作后,他的每张照片和雕像都戴着一模一样的帽子。可能是他买的第一件东西。他的最后一句话可能是我的帽子在哪里。

image.png

欧拉发表在数学杂志上的论文。言简意赅指出:5个正整数的5次方之和恰好是一个数的5次方,能够找到的最小结果。后人也模仿起来 :

73=1+((11+1)^(1+1)/(1+1))
73=(2×(2+2+2)^2)+2/2
73= (3+(3+3)^3)/3
73=4+4+(4^4+4)/4
73=5×(5+5+5)-(5+5)/5
73=(((666/(6+6+6))×(6+6))-6)/6
73=77+7-77/7
73=8×8+8/8+8
73=9×9+9/9-9

** 时间序列的股票价格波动,
可以参考下面的5种分类:
1、无序,有增有减
2、严格递增,一直升高
3、没有递减,存在价格不变的情况
4、严格递减,一直减少
5、保持不变

def sequence_classifier(arr):
   if all(arr[i] == arr[i+1] for i in range(len(arr)-1)): return 5
   if all(arr[i] <  arr[i+1] for i in range(len(arr)-1)): return 1
   if all(arr[i] <= arr[i+1] for i in range(len(arr)-1)): return 2
   if all(arr[i] >  arr[i+1] for i in range(len(arr)-1)): return 3
   if all(arr[i] >= arr[i+1] for i in range(len(arr)-1)): return 4
   return 0

5 次条件判断,就这?感觉有点平庸?
优秀的代码总是层出不穷

solution 2nd

TYPE_SEQ = {(1,): 1, (0,1): 2, (-1,):3, (-1,0): 4, (0,): 5}

def sequence_classifier(arr):
    countSet = { (a<b) - (a>b) for a,b in zip(arr, arr[1:]) }
    return TYPE_SEQ.get(tuple(sorted(countSet)), 0)

算法思想任务-

*Cat_senior_2014 Board game
安娜和布雷特正在玩一个游戏,一个计数器沿着一个有数字的棋盘移动。安娜首先把计数器放在最左边的两个数字上。然后玩家轮流移动,将柜台向右移动一到两个地方。将计数器放在一个数字上可以使玩家获得这个分数。获胜的优势是(获胜者的分数)−(失败者的分数)。这个游戏的目的是获得尽可能大的获胜优势。如果双方都打得尽可能好,安娜的胜优势是多少?

Ri8jWF8rWu.png

是时候对pd.read_csv()和pd.to_csv()说再见了

讨论 pandas 的另一个主要注意事项

白色和黑色的爱情印花纺织品(来源:Pexels)
用Pandas对CSV的输入输出操作是串行化的,这使得它们的效率非常低,而且很费时间。当我看到这里有充分的并行化空间时,这很令人沮丧,但不幸的是,Pandas并没有提供这种功能(目前)。虽然我从不赞成一开始就用Pandas创建CSV(请阅读我下面的文章了解原因),但我理解在某些情况下,人们除了用CSV工作外别无选择。

为什么我不再将数据帧转储到CSV中,为什么你也应该这样做?
是时候向pd.to_csv()和pd.read_csv()说再见了

因此,在这篇文章中,我们将探讨Dask和DataTable,这两个为数据科学家提供的最有趋势的类Pandas库。我们将根据Pandas、Dask和Datatable在以下参数上的表现进行排名。

读取CSV并获得PANDAS DATAFRAME所需的时间
如果我们通过Dask和DataTable读取CSV,它们会分别生成Dask DataFrame和DataTable DataFrame,而不是Pandas DataFrame。假设我们想坚持使用传统的Pandas语法和函数(由于熟悉),我们将不得不先把这些转换为Pandas DataFrame,如下图所示。

描述将Pandas DataFrame转换为Dask和DataTable DataFrame的代码片断
描述将Pandas DataFrame转换为Dask和DataTable DataFrame的代码片断(图片来自作者)

  1. 将PANDAS数据帧存储为CSV所需的时间

我们的目的是要从给定的Pandas DataFrame中生成一个CSV文件。对于Pandas,我们已经知道df.to_csv()方法。然而,为了从Dask和DataTable中创建一个CSV,我们首先需要将给定的Pandas DataFrame转换为各自的DataFrame,然后将它们存储在CSV中。因此,在这个分析中,我们也会考虑这个DataFrame转换的时间。

使用Pandas、Dask和DataTable将DataFrame保存到CSV的代码片段。
使用Pandas、Dask和DataTable将DataFrame保存为CSV的代码片断(图片由作者提供)
实验设置。
为了实验的目的,我在Python中生成了一个随机数据集,有可变的行和30个列--包括字符串、浮点和整数数据类型。
我将下面描述的每个实验重复了五次,以减少随机性,并从观察到的结果中得出公平的结论。我在下面一节中报告的数字是这五个实验的平均数。
Python环境和库。
Python 3.9.12
Pandas 1.4.2
DataTable 1.0.0
Dask 2022.02.1
实验1:读取CSV的时间
下图描述了Pandas、Dask和DataTable读取一个CSV文件并生成Pandas DataFrame所花费的时间(以秒计)。CSV的行数从10万到500万不等。

线图描述了Pandas、DataTable和Dask读取CSV的时间(图片来自作者)
实验结果表明,当行数少于一百万时,Dask和Pandas从CSV中生成Pandas DataFrame的时间大致相同。
然而,当我们超过一百万行时,Dask的性能就会变差,它生成Pandas DataFrame的时间明显多于Pandas本身。
在这两种情况下,Datatable在Pandas中生成一个DataFrame所需的时间最少,提供了高达4到5倍的速度--使其成为迄今为止最好的选择。
实验2:保存到CSV的时间
下面的图表描述了Pandas、Dask和DataTable从给定的Pandas DataFrame生成CSV文件所花费的时间(以秒为单位)。行数从10万到500万不等。

线图描述了Pandas、DataTable和Dask将DataFrame存储为CSV的时间(图片由作者提供)
在所有情况下,Dask在将Pandas DataFrame存储到CSV中的表现都比Pandas差。
与实验1类似,DataTable的表现最好--相对于Pandas,它的保存过程提高了近8倍。
总结说明
说实话,我并不是CSV的忠实粉丝。如果你彻底阅读了我之前的帖子(我在上面有链接,或者你可以在这里阅读)和你现在正在阅读的帖子,你可能也会对我产生共鸣。自从我发现与CSV有关的众多问题后,我已经尽可能地停止使用它们。

最后,我想说的是,除非你需要在Excel等非pythonic环境下查看你的DataFrame,否则你根本就不需要CSV。最好是像Parquet、Feather或Pickle这样的格式来存储你的DataFrame。不过,如果你觉得没有其他选择,至少可以通过利用DataTable而不是Pandas来优化你的输入和输出操作。

Python 可迭代对象

Python的可迭代对象真的将所有值存储在内存中吗

Python snippet

temp = "5 degrees"
cel = 0
fahr = float(temp)
cel = (fahr - 32.0) * 5.0 / 9.0
print(cel)

哪一行/几行应该被 try 块包围?
1
3
3、4
4

在 Python 中,关键词 “def” 有什么作用?

这是一个俚语,代表“这些代码真的酷毙了”。
它表示一个函数的开始。
它表示以下的缩进代码段将被储存起来以后再用。
它代表一个函数的开始,然后接下来的代码会被储存到以后使用。
以上全都不对。

这些代码会打印出什么?

n = 0
while True:
    if n == 3:
        break
    print(n)
    n = n + 1

012

0123

12

123

以下代码将打印多少行?

for i in [2,1,5]:
    print(i)

1
2
3
5

以下是一个如何在一串数值中找到最小的数值的代码。 一行代码有错误,导致整个代码无法和预期一样的运行。 那么是哪一行?

smallest = None
print("Before:", smallest)
for itervar in [3, 41, 12, 9, 74, 15]:
    if smallest is None or itervar < smallest:
        smallest = itervar
        break
    print("Loop:", itervar, smallest)
print("Smallest:", smallest)

第  ? 行?
3
4
6
7

其中哪一个评估为 False(假)?

0 == 0.0

0 is 0.0

0 is not 0.0

0 = 0.0

下面的代码中 i 的值是什么?

word = "bananana"
i = word.find("na")

nanana
2
3
True
na

在字符串中,用什么来代表新的一行?

\n
{new_line}
{n}
/n
/new

“continue”这个词在循环中间起到什么作用?

循环后直接跳转到代码。
跳到代码的下一行。
跳到循环的下一个迭代。
跳过下一个代码块。

使用下列哪种方法可以在列表末尾添加元素?

insert
push
append
new

在这个代码中,n 等于什么?

words = 'His e-mail is q-lar@freecodecamp.org'
pieces = words.split()
parts = pieces[3].split('-')
n = parts[1]

@
q
lar
lar@freecodecamp.org

当这些代码运行之后,dict 等于什么?

dict = {"Fri": 20, "Thu": 6, "Sat": 1}
dict["Thu"] = 13
dict["Sat"] = 2
dict["Sun"] = 9

{'Fri': 20, 'Thu': 6, 'Sat': 1}

{'Fri': 20, 'Thu': 6, 'Sat': 1, 'Thu': 13, 'Sat': 2, 'Sun': 9}

{'Sun': 9}

{'Thu': 13, 'Sat': 2, 'Sun': 9}

{'Fri': 20, 'Thu': 13, 'Sat': 2, 'Sun': 9}

这段代码将打印什么?

counts = { 'quincy' : 1 , 'mrugesh' : 42, 'beau': 100, '0': 10}
print(counts.get('kris', 0))

2
quincy
0
10
[将返回错误]

以下代码将打印什么?

counts = { 'chuck' : 1 , 'annie' : 42, 'jan': 100}
for key in counts:
    if counts[key] > 10:
        print(key, counts[key])

annie 42
jan 100
chuck 1
annie 42
jan 100
chuck 1
[Error](错误)

这些代码会打印出什么?

d = dict()
d['quincy'] = 1
d['beau'] = 5
d['kris'] = 9
for (k,i) in d.items():
    print(k, i)

quincy 0
beau 1
kris 2

quincy 1
beau 5
kris 9

1 quincy
5 beau
9 kris

哪个代码与示例代码完成相同的功能?

#示例snippet 
lst = []
for key, val in counts.items():
    newtup = (val, key)
    lst.append(newtup)
lst = sorted(lst, reverse=True)
print(lst)

#比较snippet
print( sorted( [ (v,k) for k,v in counts.items() ], reverse=True ) )

print( [ (k,v) for k,v in counts.items().sorted() ] )

print( sorted( [ (v,k) for k,v in counts.keys() ] ) )

print( [ (k,v) for k,v in counts.values().sort() ] )

哪一个正则表达式匹配只有一个空白字符?

\S
\s
.
_
\.

该程序会打印出什么?

import re
s = 'A message from csev@umich.edu to cwen@iupui.edu about meeting @2PM'
lst = re.findall('\\S+@\\S+', s)
print(lst)

['csev@umich.edu', 'cwen@iupui.edu']
['csev@umich.edu']
['umich.edu', 'iupui.edu']
['csev@', 'cwen@']

在正则表达式中,怎么搜索一个 “$” 符号?

$
\dollar\
\$
!$

哪个 Python 库提供对 TCP 套接字的访问?

tcp

socket

http

port

通常使用哪种类型的 HTTP 请求来访问一个网站?

POST
GET
WEB
ACCESS

以下代码创建了什么?

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)

while True:
    data = mysock.recv(512)
    if len(data) < 1:
        break
    print(data.decode(),end='')
mysock.close()

一个简单的 web 服务器
一个简单的 email 客户端
一个简单的待办事项列表
一个简单的 web 浏览器

大多数网站使用哪种编码类型?

UTF-8
UTF-16
UTF-32

以下代码的输出将是什么样的?

import urllib.request
fhand = urllib.request.urlopen('http://data.pr4e.org/romeo.txt')
for line in fhand:
    print(line.decode().strip())

只有 “romeo.txt” 的内容。
“romeo.txt” 的 header 和内容。
“romeo.txt” 的 header、footer 和内容。

哪个 Python 库是用于解析 HTML 文档并从中提取数据?

socket
http
BeautifulSoup
PrettyBiscuit
WonderfulSalad
HttpParser
GrunkleStan

通过互联网发送数据的两种最常见的方法是什么?

JSON 和 TXT
JSON 和 XML
XML 和 TXT
XML 和 PHP
PHP 和 TXT

以下 XML 有什么问题?

<person>
  <name>Chuck</name>
  <phone type="intl">
    +1 734 303 4456
  <email hide="yes" />
</person>

Email 标签缺少结束标签。
间距将导致 XML 无效。
Phone 标签缺少结束标签。
纯文本应使用 UTF-8 编码。

什么是 XSD?

XML 的 W3C 模式规范。
来自 MOZ 的标准 JSON 模式。
可扩展情境驱动程序

这些代码会打印出什么?

import json
data = '''
  [
    { "id" : "001",
      "x" : "2",
     "name" : "Quincy"
    } ,
    { "id" : "009",
      "x" : "7",
      "name" : "Mrugesh"
    }
  ]
'''
info = json.loads(data)
print(info[1]['name'])

Quincy
Mrugesh
001
009
[Error](错误)

用面向服务的方法来开发网络应用,数据位于何处?

分布在许多通过互联网或内部网络连接的计算机系统上。
在主 Web 服务器上的不同服务中。
在单独的数据库服务器上。

API 的全称是什么?

应用便携式智能(Application Portable Intelligence)
国际助理编程(Associate Programming International)
应用程序接口(Application Program Interface)
动作便携式接口(Action Portable Interface)

当 Twitter API 发出请求时,必须始终随请求一起发送什么信息?

Twitter 用户名
日期范围
搜索词
密钥

于 Python 对象的说法,哪一个是不正确的?

对象被创建和使用
对象是代码和数据的一部分
对象隐藏细节
对象是五个标准数据类型之一

下列代码正确的输出是?

class PartyAnimal:
    x = 0
    def party(self):
        self.x = self.x + 2
        print(self.x)

an = PartyAnimal()
an.party()
an.party()

So far 1
So far 2

0
0

2
2

2
4

以下程序将打印什么?

class PartyAnimal:
    x = 0
    name = ''
    def __init__(self, nam):
        self.name = nam
        print(self.name,'constructed')
    def party(self):
        self.x = self.x + 1
        print(self.name,'party count',self.x)

q = PartyAnimal('Quincy')
m = PartyAnimal('Miya')

输出结果是?

q.party()
m.party()
q.party()

Quincy constructed
Miya constructed
Quincy party count 1
Miya party count 2
Quincy party count 3

Quincy constructed
Miya constructed
Quincy party count 1
Miya party count 1
Quincy party count 2

Quincy constructed
Quincy party count 1
Quincy party count 2
Miya constructed
Miya party count 1

面向对象编程中的继承是指什么?

扩展父类时创建的新类。
类的构造实例。
通过扩展现有类来创建新类的能力。

在使用类构造对象时调用的方法。

哪个不是数据库中主要的数据结构?

array
list
行
列

您将使用什么 SQL 命令来检索具有电子邮件地址 quincy@freecodecamp.org 的所有用户?

SELECT Users WHERE email="quincy@freecodecamp.org"

SELECT Users WHERE email IS "quincy@freecodecamp.org"

SELECT ALL Users WHERE email="quincy@freecodecamp.org"

SELECT * FROM Users WHERE email IS "quincy@freecodecamp.org"

SELECT * FROM Users WHERE email="quincy@freecodecamp.org"

对于一个字符串数据应该被保存在一个数据库里多少次,最佳实践是什么?

0
1
2
3

什么是外键?

一个不应存在于这里的键
一个使用非拉丁字符的键
一个指向不同表中关联行的主键的数字
一个在“现实世界”中可能用于查找行的键

INSERT 命令在 SQL 中的作用是什么?

它定义新行,通过列出我们要包括的字段,然后列出要放入新行中的值。
它定义新列,通过列出要包含的行以及要放入新列中的值。
它定义一个新表,通过列出要包括的行和字段以及要放入表中的值。

在 SQL 语句中使用 JOIN 子句时,ON 的作用是什么?

它指示在哪些表上执行 JOIN。
它指定用于 JOIN 的字段。
它指示如何将两个表连接在一起。
关系型数据库:多对多关系

哪个是多对多关系的示例?
老师与学生
客户与订单
书与内页
城市与国家

大多数数据在使用之前需要 ______ 。
转换为 JSON 格式
图形化
清理
记忆
转化成歌曲

页面排名算法是如何工作的?

它决定哪些页面之间的连接程度最高。
它用浏览量来决定排名
它能判断出哪些页面包含最重要的内容。

Python Operators and Expressions

In the Python statement x = a + 5 - b:
a and b are ________
a + 5 - b is ________
operands, an expression
operators, a statement
operands, an equation
terms, a group

在Python语句中x = a + 5 - b,Python运算符和表达式

a和b是________
a + 5 - b 是 ________

操作数,一个表达式
运算符,一个语句
操作数,一个方程

表达式100/25的值是多少?
如果你回答是4,你可能忘记了标准除法的结果总是浮点数。100/25(整数除法)的值是4。
你应该使用==运算符来确定浮点数类型的对象是否相等?

Sure! Go for it.
Nope, not a good idea.

不是好主意!
浮点对象的内部表示并不精确,所以不能依靠它们完全等于你认为的那样。

再看下面例子:

>>> 1.1 + 2.2 == 3.3
False

>>> tolerance = 0.00001
>>> abs((1.1 + 2.2) - 3.3) < tolerance
True

你应该表达容忍误差的范围,这是一种取舍判断 !
即公差计算这些数字是否足够接近,以满足一个指定的公差。

Consider the following code snippet:
下列代码片段的输出是?

x = 10.0
y = (x < 100.0) and isinstance(x, float)
#After these are executed, what is the value of y?

True
Correct
0
None
1
False

表达式的术语
不仅是真实的,而且实际上等于 Python 值 True 的情况。因此该表达式也是 True。
下面哪些为真 True

if  (x < 100.0) and isinstance(x, float) == True
x 是下列哪些值时成立?

0
False
True
"None"
[]
0.000001

Python 对象 None 是虚假的,但是非空字符串 'None' 是真实的。
0.000001,一个非零的数字值,也是真实的。但是很勉强。

假设执行了以下语句。

a = 100
b = 200

表达式的值是多少?

a and b 

200
100

当两个非布尔值用and或or连接时,表达式的值是其中一个操作数,而不是True或False。
对于两个非布尔值a和b。
如果a是a或者b是a并且b是truthyabfalsyba

数学模块中的函数sqrt()计算了一个数字的平方根。
突出显示的这行代码是否会引发一个异常?

The function sqrt() from the math module computes the square root of a number.
Will the highlighted line of code raise an exception?

x = -100
from math import sqrt
x > 0 and sqrt(x)

在突出显示的一行中,x>0是False。在这一点上,这个表达式已经知道是错误的了。由于短路,sqrt(x)(会引发一个异常)没有被执行!

For two objects x and y,满足 x is y is True 的条件是 :

x is y is True
if and only if:id(x) == id(y)

True
False

Which of the following operators has the lowest precedence?
下列运算符的优先次序?

%
**
and
+
not

and has the lowest precedence of all the operators covered in this tutorial except or.
The question doesn’t state whether the + operator listed is binary addition or unary positive. But it doesn’t matter—it wouldn’t have a lower precedence than and either way.
和在本教程中涉及的所有运算符中优先级最低,除了或。

问题中没有说明所列的+运算符是二进制加法还是单进制正数。但这并不重要--无论如何,它的优先级都不会比and低。

What is the value of the expression 1 + 2 ** 3 * 4?

4097
108
36
33

解析:
首先,*运算符的优先级最高,其次是,而+的优先级最低。
因此,计算的过程如下。
The ** operator has the highest precedence, followed by *, and + the lowest.
Thus, the calculations are performed as follows:
1 + (2 ** 3) * 4
1 + (8 * 4)
1 + 32
33

方便读者不必回忆优先顺序,把它写成1 + ((2 * 3) * 4)也不失为一个好主意,尽管括号并没有改变表达式的求值方式。
To spare the reader from recalling the order of precedence, it wouldn’t be a bad idea to write this as 1 + ((2 ** 3) * 4), even though the parentheses don’t change the way the expression is evaluated.

编写Python代码练习

创建一个数值为100的变量x
使用一个增强的赋值运算符将x的值增加5倍

1Write Python code to:
Create a variable x with the value 100
Increase the value of x fivefold using an augmented assignment operator
Incorrect
Use the *= operator
This is what we expected to see:
x = 100
x *= 5

你的代码是?


Splitting, Concatenating, and Joining Strings in Python

In Python, strings are…
immutable
changeable
str objects
char arrays

split()的minsplit参数指定了对输入字符串进行分割的最小数量。
准确
不正确

不正确
split()接收两个参数:sep,分隔符字符串,和maxsplit,指定对输入字符串进行分割的最大数量。

Which of the following would separate a string input_string on the first 2 occurences of the letter “e”?
以下哪种情况会使一个字符串input_string的前两次出现的字母 "e "分开?

input_string = "occurences"

print('e'.split(input_string, maxsplit=2))
print(input_string.split('e', 2))
print('e'.split(input_string, 2))
print(input_string.split('e', maxsplit=2))

['e']
['occur', 'nc', 's']
['e']
['occur', 'nc', 's']

相关文章

  • 有趣的数论 欧拉为什么不摘帽子

    为什么欧拉从不脱帽。有没有注意到在他找到第一份工作后,他的每张照片和雕像都戴着一模一样的帽子。可能是他买的第一件东...

  • 数论 欧拉函数

    欧拉函数在解题的作用在于求一个数的质因子的个数,例如φ(24)=8,因为1, 5, 7, 11, 13, 17, ...

  • 欧拉函数(Euler Function)

    欧拉函数 在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧...

  • 数学之美 第十七章 RSA加密算法

    预备知识: 欧拉函数 在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(其中φ(1)=1) ...

  • 2020-01-22(学习笔记附录)

    数论概论 同余式、幂与费马小定理 费马小定理:p为质数,a除以p不为0,则a^(p-1) 除以p余1 欧拉公式:若...

  • 假如用MC大片的形式来打开同学之间打架

    “欧拉欧拉欧拉欧拉欧拉欧拉欧拉……” “啊哒哒哒哒哒哒哒哒哒哒哒……” “你们在干嘛呀喂...

  • 第一天

    utellm I said lololololol 欧拉欧拉欧拉欧拉 wryyyyyyyyyyyyyyy

  • Illusion or Reality

    欧拉的室友要搬走了,收拾行李不时传来的噪音弄得欧拉无法入睡。 因为清醒,想睡却睡不着,欧拉的头隐隐作痛。室友为什么...

  • 天才9 欧拉3

    欧拉一生中共写下了886本书籍和论文,其中分析、代数、数论占40%,几何占18%,彼得堡科学院为了整理他的著...

  • 品味数学之美-RSA原理浅析

    学一点有趣的数论知识 在探究RSA算法的原理之前,我们先来学习一点有趣的数论知识(数学分支之一,主要研究整数的性质...

网友评论

      本文标题:有趣的数论 欧拉为什么不摘帽子

      本文链接:https://www.haomeiwen.com/subject/bnhmmrtx.html