#!/usr/bin/env python
# coding: utf-8
# 文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html
#
# 多图旧排版:https://www.cnblogs.com/dunitian/p/9103673.html
#
# VSCode设置python3的开发环境(linux下默认是python2)https://www.cnblogs.com/dotnetcrazy/p/9095793.html
#
# 欢迎提出更简单的语法~(文章中案例有两个福利哦,一个是养生,一个是人工智能[ 密码:fqif])
#
# 先说下感觉,`python`的编程有点`JavaScript`的感觉(比如:'和“有时候不区别),又感觉像外国版的易语言,整个过程像读书一样,比如一个元素不在列表之中==> `for item not in lists`。使用它做个大点的项目一定要先规定好编程风格,不然能让人崩溃的。先不深究,后面会继续深究。。。(Python2我就不讲了,官方推荐使用`Python3`)
# ## 1.命名规则
#
# Python官方是推荐使用`_`来间隔单词,但一般开发人员都是以各自主语言的命名来定义的,这个就各人爱好了,不过团队一定要统一。
#
# **命名规则**:总的原则就是 **见名知意**,一般都是 **驼峰命名法**,纯Python的话推荐用 **`_`连接单词**
#
# 扩充:`Python`的`关键词`可以自己打印一下:
# In[1]:
import keyword
print(keyword.kwlist)
# ### 1.1.标识符
# 标示符由字母、下划线和数字组成,且数字不能开头(这个基本上都一样)注意:**标识符是区分大小写的**
#
# ### 1.2.Python
# In[2]:
# Python标识符区分大小写的案例
temp="xxx"
tEmp="==="
print(temp+tEmp)
# ### 1.3.CSharp
# In[3]:
get_ipython().run_cell_magic('script', 'csharp', '//CSharp标识符区分大小写的案例\nvar temp = "xxx";\nvar tEmp = "===";\nConsole.WriteLine(temp + tEmp);\n')
# ## 2.注释
#
# ### 2.1.python
#
# python输出就直接`print`即可,C是`printf`(**不要搞混哦**)
#
# `#`**注释一行**,三个单引号或者三个双引号 **注释多行**:`'''XXX'''`或者`"""XXXX"""`(一般用`#`就够了,有点像`shell`脚本的感觉)
# In[4]:
#单行注释 输出
print("Hello World!")
# In[5]:
'''三个单引号多行注释:
print("Hello World!")
print("Hello World!")
print("Hello World!")'''
# In[6]:
"""三个双引号多行注释:
print("Hello World!")
print("Hello World!")
print("Hello World!")"""
# ### 2.2.CSharp
#
# C、Java、Net都是`//`注释一行,`/**/`注释多行
# ```csharp
# Console.WriteLine("小明同学");
# // Console.WriteLine("小明同学"); 注释一行
# /*Console.WriteLine("小明同学");
# Console.WriteLine("小明同学"); 注释多行*/
# ```
# ## 3.变量
#
# ### 3.1.Python
#
# python定义变量比较牛逼,**直接写变量名**即可,句子后面 **不用加分号**,eg:`name="小明"`
# In[7]:
#定义一个变量并输出
name="小明"
print(name)
# ### 3.2.CSharp
#
# 可以用`var`来进行类型推断,eg:`var name="小明";`
# In[8]:
get_ipython().run_cell_magic('script', 'csharp', 'var test = "123";//定义一个变量\nConsole.WriteLine(test);//输出这个变量\n')
# ## 4.输入输出
#
# ### 4.1.Python
#
# **换行**输出,**不换行**输出:(**\n**使用这个就不说了,它们和C都是一样的)
#
# python:`print("dnt.dkill.net/now",end='')` **默认end='\n' (' 和 " 随意)**
# In[9]:
print("dnt.dkill.net/now",end='')
print("带你走进中医经络")
# In[10]:
print("dnt.dkill.net/now",end="")
print("带你走进中医经络")
# 如果字符串内部既包含`'`又包含`"`怎么办?可以用转义字符`\`来标识
# In[11]:
#如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识
print("I\'m \"OK\"!")
# `r''`表示`''`内部的字符串默认不转义
# In[12]:
# 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义
print(r'\\\t\\')
# `'''...'''`的格式表示多行内容
# In[13]:
#如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容
print('''我请你吃饭吧~
晚上吃啥?
去厕所,你说呢?''')
# 扩:Python提供一种以空格分隔的方式:
# In[14]:
print("I","Love","You")
# python输出`多个重复字符`,不需要自己手打N个`*`或者`for`循环输出多个重复字符,eg:`print("x"*10)`
# In[15]:
print("x"*10)
# 如果你不太确定应该用什么,`%s`永远起作用,它会 **把任何数据类型转换为字符串**
#
# ```
# %c 字符
# %s 通过str() 字符串转换来格式化
# %o 八进制整数
# %x 十六进制整数(小写字母)
# %X 十六进制整数(大写字母)
# %e 指数(小写'e')
# %E 指数(大写“E”)
# %f 浮点实数
# %g %f和%e 的简写
# %G %f和%E的简写
# ```
# 下面来个输入输出的简单的 **案例**吧:打印一张名片,**Name:毒逆天,Gender:男**
#
# `print("Name:%s,Gender:%s"%(name,gender))`【**注意引号后面没有`,`哦**】
# In[16]:
#定义一个变量name,用户输入将赋值给name
name=input("请输入用户名:")
#定义一个变量gender,用户输入将赋值给gender
gender=input("请输入性别:")
#多个变量输出
print("Name:%s,Gender:%s"%(name,gender))
# ### 4.2.CSharp
#
# 输出用:`Console.Write` `Console.WriteLine`
# In[17]:
get_ipython().run_cell_magic('script', 'csharp', 'Console.Write("dnt.dkill.net/now");\nConsole.WriteLine("带你走进中医经络");\n')
# C#用`@`来转义字符,不管你是转义字符还是换行,**通杀**
# In[18]:
get_ipython().run_cell_magic('script', 'csharp', 'Console.WriteLine(@"\\\\\\\\\\\\\\");\n')
# In[19]:
get_ipython().run_cell_magic('script', 'csharp', 'Console.WriteLine(@"我请你吃饭吧~\n晚上吃啥?\n去厕所,你说呢?")\n')
# Csharp输入输出的简单的 **案例**:打印一张名片,`Name:毒逆天,Gender:男`
#
# C#:`Console.WriteLine($"Name:{name},Gender:{gender}");`
# ```csharp
# Console.WriteLine("请输入用户名:");
# var name = Console.ReadLine();
#
# Console.WriteLine("请输入性别:");
# var gender = Console.ReadLine();
#
# Console.WriteLine($"Name:{name},Gender:{gender}"); //推荐用法
# Console.WriteLine("Name:{0},Gender:{1}", name, gender); //Old 输出
# ```
# ## 5.类型转换
#
# ### 5.1.Python
#
# **类型(值)**,eg:`int()`,`long()`,`float()`,`str()`,`list()`,`set()`...等等
#
# Python没有 **double**类型哦~
#
# **扩**:转换成 **16进制**:`hex()`、转换为 **8进制**:`oct()`
# In[20]:
# 求和
num1=input("输入第一个数字")
num2=input("输入第二个数字")
print("num1+num2=%d" %(int(num1)+int(num2)))
# ### 5.2.Csharp
#
# `C#`:该案例推荐使用 `int.TryParse`,我这边就用常用的`Convert`系列了【**支持类型比较多**】
#
# `Convert.ToInt64()`,`Convert.ToDouble()`,`Convert.ToString()`...
#
# ```csharp
# //类型转换
# Console.WriteLine("输入第一个数字:");
# var num1 = Console.ReadLine();
# Console.WriteLine("输入第二个数字:");
# var num2 = Console.ReadLine();
# Console.WriteLine($"num1+num2={Convert.ToInt32(num1) + Convert.ToInt32(num2)}");
# ```
# ## 6.算术运算符
#
# ### 6.1.Python
#
# 算术运算符编程语言基本上差不多,Python多了个 `//` 取商(`%`是取余)和 幂`**`,来个案例:
# In[21]:
num=9
print("num=9,下面结果是对2的除,取余,取商操作:")
print(num/2.0)
print(num%2.0)
print(num//2.0)
print("2^3=%d"%2**3)
# Python3现在这样写也行,`推荐和其他语言写法一致`(**不然你用惯了Python,切换的时候会出事的**)
# In[22]:
num=9
print("num=9,下面结果是对2的除,取余,取商操作:")
print(num/2)
print(num%2)
print(num//2)
print("2^3=%d"%2**3)
# `+=` `-=` `*=` `/=` `%=` `**=` `//=` 这些就不用详说了吧?
#
# 举个例子:`c += a` 等效于 `c = c + a`
#
# 注意下,**Python中不见得等效**,Python都是**引用**,这个先不说**后面说**
# ### 6.2.Csharp
#
# C#常用数学方法都在`Match`类中
# In[23]:
get_ipython().run_cell_magic('script', 'csharp', 'var num=9;\nConsole.WriteLine("num=9,下面结果是对2的除,取余,取商操作:")\nConsole.WriteLine(num/2.0);\nConsole.WriteLine(num%2.0);\nConsole.WriteLine(num/2);\nConsole.WriteLine(Math.Pow(2,3));\n')
# ## 7.if else
#
# ### 7.1.Python
#
# 说Python像外国版的`易语言`,这边就可以看出来一点了,如果再结合Python命名规则就感觉在阅读文章一样
#
# 先说说Python的`逻辑运算符`:与`and` 或`or` 非`not`,这个倒是跟C、C#、Java等大大不同,和SQL倒是差不多
#
# 关系运算符和其他语言基本上差不多(`==` `!=` `<>` `>` `<` `>=` `<=`)
#
# 就一点不一样:不等于也可以用`<>`,这是兼容SQL的写法吗?
#
# 来个`if else`基础语法:**括号可加可不加**,但是**记得加`:`**。**不用大括号**,但是if里面的代码**注意缩进**
# In[24]:
age=19
if age>=18:
print("成年了")
# 再来个**嵌套**的:注意哦~ `else if` 在python里面 **简写**成了:**`elif`**
# In[25]:
age=24
if age>=23:
print("七大姑曰:工作了吗?八大姨问:买房了吗?异性说:结婚了吗?")
elif age>=18:
print(age)
print("成年了哇")
else:
print("好好学习天天向上")
# 结合前面知识,再来个案例:
# In[26]:
input_int=int(input("请输入(1-7)"))
#if后面的:,tab格式,else if 现在是elif
if input_int==1:
print("星期一")
elif input_int==2:
print("星期二")
elif input_int==3:
print("星期三")
elif input_int==4:
print("星期四")
elif input_int==5:
print("星期五")
elif input_int==6:
print("星期六")
elif input_int==7:
print("星期日")
else:
print("别闹")
# ### 7.2.Csharp
#
# C# `if else` **单行代码可以不用写括号**
#
# ```csharp
# int age = 24;
#
# if (age >= 23)
# Console.WriteLine("七大姑曰:工作了吗?八大姨问:买房了吗?异性说:结婚了吗?");
# else if (age >= 18)
# {
# Console.WriteLine(age);
# Console.WriteLine("成年了哇");
# }
# else
# Console.WriteLine("好好学习天天向上");
# ```
#
# **NetCore现在推荐,如果是单行,建议`Code`和`if else`写在一行:**
# ```csharp
# int age = 24;
# if (age >= 23) Console.WriteLine("七大姑曰:工作了吗?八大姨问:买房了吗?异性说:结婚了吗?");
# else if (age >= 18)
# {
# Console.WriteLine(age);
# Console.WriteLine("成年了哇");
# }
# else Console.WriteLine("好好学习天天向上");
# ```
# ## 8.While
#
# ### 8.1.Python
#
# python里面没有`++` 和 `--`,这点的确用的有点小不方便,**扩展部分有相关说明**
#
# **while循环一般通过数值是否满足来确定循环的条件**
#
# 来几个个案例(PS:感觉用C了,捂脸^_^)
# In[28]:
num=10
while num>0:
print(num)
num-=1
# In[29]:
i=1
#输出一个三角形
while i<6:
j=1
while j<=i:
print("*",end="")#不换行输出
j+=1
print("")#下一行
i+=1
# In[30]:
# 1~100求和
i=1
sum=0
while i<=100:
sum+=i
i+=1
print(sum)
# ### 8.2.Csharp
#
# 用法差不多,来个案例
# In[31]:
get_ipython().run_cell_magic('script', 'csharp', 'int index = 1;\nint sum = 0;\nwhile (index <= 100)\n{\n sum += index;\n index++;\n}\nConsole.WriteLine(sum);\n')
# ### 8.3.Python扩展(++ --)
#
# 其实Python分为 **可变类型**(`list`,`dict`,`set`等等)和 **不可变类型**(`int`,`str`,`tuple`等等)
#
# 像数字这类的是不可变类型(后面会继续说)所以结果往往和你预期的不一样哦~看个案例:
# In[32]:
# python 中,变量是以内容为基准而不是像 c 中以变量名为基准,所以只要你的数字内容是5
# 不管你起什么名字,这个变量的 ID 是相同的,同时也就说明了 python 中一个变量可以以多个名称访问
a=5
b=5
print(id(a))
print(id(b))
print(a is b)
a+=1
print(id(a))
print(id(b))
print(a is b)
# 你还可以看看这篇文章:**Python没有 ++/--** 参考文章(点我)
# ## 9.for
#
# ### 9.1.Python
#
# `python`的`for`循环,类似于`js`里面的`for in`
#
# 当然了,python的`for`还有很多诸如`列表生成式`的便捷功能,基础部分先不说
#
# 看个基础案例:
# In[1]:
# 基础循环:后面会讲range
for i in range(5):
print(i)
i+=1
# In[2]:
#while循环一般通过数值是否满足来确定循环的条件
#for循环一般是对能保存多个数据的变量,进行遍历
name="https://pan.baidu.com/s/1weaF2DGsgDzAcniRzNqfyQ#mmd"
for i in name:
if i=='#':
break
print(i,end='')#另一种写法:print("%s"%i,end="")
print('\n end ...')
# ### 9.2.Csharp
#
# `foreach (var i in name)`
# In[3]:
get_ipython().run_cell_magic('script', 'csharp', 'var url = "https://pan.baidu.com/s/1weaF2DGsgDzAcniRzNqfyQ#mmd";\nforeach (var item in url)\n{\n if (item == \'#\')\n break;\n Console.Write(item);\n}\nConsole.WriteLine("\\n end ...");\n')
# ### 9.3.Python扩展(for else)
#
# for的扩展:`for else`(一般不太用)
#
# **官方参考**:https://docs.python.org/3/reference/compound_stmts.html#the-for-statement
#
# ![for-else图片](https://images2018.cnblogs.com/blog/1127869/201805/1127869-20180531172814702-1628372100.png)
#
# 图片出处:https://www.cnblogs.com/dspace/p/6622799.html
# ## 其他扩展
#
# ### 1.Python 没有 switch / case 语句
#
# Python 没有`switch / case`语句。为了实现它,我们可以使用`字典映射`:
#
# 官方的解释说:https://docs.python.org/3.6/faq/design.html#why-isn-t-there-a-switch-or-case-statement-in-python
#
# "用`if... elif... elif... else`序列很容易来实现`switch / case`语句,而且可以使用函数字典映射和类的调度方法"
#
# ```py
# def numbers_to_strings(argument):
# switcher = {
# 0: "zero",
# 1: "one",
# 2: "two",
# }
# return switcher.get(argument, "nothing")
# ```
# 这段代码类似于:
# ```
# function(argument){
# switch(argument) {
# case 0:
# return "zero";
# case 1:
# return "one";
# case 2:
# return "two";
# default:
# return "nothing";
# };
# };
# ```
# **在Python中字典映射也可以包含函数或者 lambda 表达式:**
# ```py
# def zero():
# return "zero"
#
# def one():
# return "one"
#
# def numbers_to_functions_to_strings(argument):
# switcher = {
# 0: zero,
# 1: one,
# 2: lambda: "two",
# }
# func = switcher.get(argument, lambda: "nothing")
# return func()
# ```
# **类的调度方法**:
#
# 如果在一个类中,不确定要使用哪种方法,可以用一个调度方法在运行的时候来确定
# ```py
# class Switcher(object):
# def numbers_to_methods_to_strings(self, argument):
# method_name = 'number_' + str(argument)
# method = getattr(self, method_name, lambda: "nothing")
# return method()
#
# def number_0(self):
# return "zero"
#
# def number_1(self):
# return "one"
#
# def number_2(self):
# return "two"
# ```
# **Python设计相关的为什么,可以参考官方文档**:https://docs.python.org/3.6/faq/design.html
# ### 2.Csharp基础笔记
#
# C#基础(逆天上学那会做的笔记)
#
# 易忘知识点
#
# C#基础汇总
#
# 异常概况系
#
# **其实有了Code,笔记也就没啥用了,知识点直接Code验证一下即可**
#
# CodeBase ~ POP
#
# CodeBase ~ OOP
# 欢迎纠正+补充~
# In[ ]: