文章彙總:https://www.cnblogs.com/dotnetcrazy/p/9160514.html
目錄:
- 1.命名規則¶
- 1.1.標識符¶
- 1.2.Python¶
- 1.3.CSharp¶
- 2.註釋¶
- 2.1.python¶
- 2.2.CSharp¶
- 3.變量¶
- 3.1.Python¶
- 3.2.CSharp¶
- 4.輸入輸出¶
- 4.1.Python¶
- 4.2.CSharp¶
- 5.類型轉換¶
- 5.1.Python¶
- 5.2.Csharp¶
- 6.算術運算符¶
- 6.1.Python¶
- 6.2.Csharp¶
- 7.if else¶
- 7.1.Python¶
- 7.2.Csharp¶
- 8.While¶
- 8.1.Python¶
- 8.2.Csharp¶
- 8.3.Python擴展(++ --)¶
- 9.for¶
- 9.1.Python¶
- 9.2.Csharp¶
- 9.3.Python擴展(for else)¶
- 其他擴展¶
- 1.Python 沒有 switch / case 語句¶
- 2.Csharp基礎筆記¶
文章彙總: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)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
1.1.標識符
標示符由字母、下劃線和數字組成,且數字不能開頭(這個基本上都一樣)注意:標識符是區分大小寫的
1.2.Python
In [2]:
# Python標識符區分大小寫的案例 temp="xxx" tEmp="===" print(temp+tEmp)
xxx===
1.3.CSharp
In [3]:
%%script csharp //CSharp標識符區分大小寫的案例 var temp = "xxx"; var tEmp = "==="; Console.WriteLine(temp + tEmp);
xxx===
2.註釋
2.1.python
python輸出就直接print
即可,C是printf
(不要搞混哦)
#
註釋一行,三個單引號或者三個雙引號 註釋多行:'''XXX'''
或者"""XXXX"""
(一般用#
就夠了,有點像shell
腳本的感覺)
In [4]:
#單行註釋 輸出 print("Hello World!")
Hello World!
In [5]:
'''三個單引號多行註釋: print("Hello World!") print("Hello World!") print("Hello World!")'''
Out[5]:
'三個單引號多行註釋:\nprint("Hello World!")\nprint("Hello World!")\nprint("Hello World!")'
In [6]:
"""三個雙引號多行註釋: print("Hello World!") print("Hello World!") print("Hello World!")"""
Out[6]:
'三個雙引號多行註釋:\nprint("Hello World!")\nprint("Hello World!")\nprint("Hello World!")'
2.2.CSharp
C、Java、Net都是//
註釋一行,/**/
註釋多行
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]:
%%script csharp var test = "123";//定義一個變量 Console.WriteLine(test);//輸出這個變量
123
4.輸入輸出
4.1.Python
換行輸出,不換行輸出:(\n使用這個就不說了,它們和C都是一樣的)
python:print("dnt.dkill.net/now",end='')
默認end='\n' (' 和 " 隨意)
In [9]:
print("dnt.dkill.net/now",end='') print("帶你走進中醫經絡")
dnt.dkill.net/now帶你走進中醫經絡
In [10]:
print("dnt.dkill.net/now",end="") print("帶你走進中醫經絡")
dnt.dkill.net/now帶你走進中醫經絡
如果字符串內部既包含'
又包含"
怎麼辦?可以用轉義字符\
來標識
In [11]:
#如果字符串內部既包含'又包含"怎麼辦?可以用轉義字符\來標識 print("I\'m \"OK\"!")
I'm "OK"!
r''
表示''
內部的字符串默認不轉義
In [12]:
# 如果字符串裏面有很多字符都需要轉義,就需要加很多\,爲了簡化,Python還允許用r''表示''內部的字符串默認不轉義 print(r'\\\t\\')
\\\t\\
'''...'''
的格式表示多行內容
In [13]:
#如果字符串內部有很多換行,用\n寫在一行裏不好閱讀,爲了簡化,Python允許用'''...'''的格式表示多行內容 print('''我請你喫飯吧~ 晚上喫啥? 去廁所,你說呢?''')
我請你喫飯吧~ 晚上喫啥? 去廁所,你說呢?
擴:Python提供一種以空格分隔的方式:
In [14]:
print("I","Love","You")
I Love You
python輸出多個重複字符
,不需要自己手打N個*
或者for
循環輸出多個重複字符,eg:print("x"*10)
In [15]:
print("x"*10)
xxxxxxxxxx
如果你不太確定應該用什麼,%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))
請輸入用戶名:毒逆天 請輸入性別:男 Name:毒逆天,Gender:男
4.2.CSharp
輸出用:Console.Write
Console.WriteLine
In [17]:
%%script csharp Console.Write("dnt.dkill.net/now"); Console.WriteLine("帶你走進中醫經絡");
dnt.dkill.net/now帶你走進中醫經絡
C#用@
來轉義字符,不管你是轉義字符還是換行,通殺
In [18]:
%%script csharp Console.WriteLine(@"\\\\\\\");
\\\\\\\
In [19]:
%%script csharp Console.WriteLine(@"我請你喫飯吧~ 晚上喫啥? 去廁所,你說呢?")
我請你喫飯吧~ 晚上喫啥? 去廁所,你說呢?
Csharp輸入輸出的簡單的 案例:打印一張名片,Name:毒逆天,Gender:男
C#:Console.WriteLine($"Name:{name},Gender:{gender}");
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)))
輸入第一個數字1 輸入第二個數字2 num1+num2=3
5.2.Csharp
C#
:該案例推薦使用 int.TryParse
,我這邊就用常用的Convert
系列了【支持類型比較多】
Convert.ToInt64()
,Convert.ToDouble()
,Convert.ToString()
...
//類型轉換 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)
num=9,下面結果是對2的除,取餘,取商操作: 4.5 1.0 4.0 2^3=8
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)
num=9,下面結果是對2的除,取餘,取商操作: 4.5 1 4 2^3=8
+=
-=
*=
/=
%=
**=
//=
這些就不用詳說了吧?
舉個例子:c += a
等效於 c = c + a
注意下,Python中不見得等效,Python都是引用,這個先不說後面說
6.2.Csharp
C#常用數學方法都在Match
類中
In [23]:
%%script csharp var num=9; Console.WriteLine("num=9,下面結果是對2的除,取餘,取商操作:") Console.WriteLine(num/2.0); Console.WriteLine(num%2.0); Console.WriteLine(num/2); Console.WriteLine(Math.Pow(2,3));
num=9,下面結果是對2的除,取餘,取商操作: 4.5 1 4 8
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("別鬧")
請輸入(1-7)2 星期二
7.2.Csharp
C# if else
單行代碼可以不用寫括號
int age = 24; if (age >= 23) Console.WriteLine("七大姑曰:工作了嗎?八大姨問:買房了嗎?異性說:結婚了嗎?"); else if (age >= 18) { Console.WriteLine(age); Console.WriteLine("成年了哇"); } else Console.WriteLine("好好學習天天向上");
NetCore現在推薦,如果是單行,建議Code
和if else
寫在一行:
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
10 9 8 7 6 5 4 3 2 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)
5050
8.2.Csharp
用法差不多,來個案例
In [31]:
%%script csharp int index = 1; int sum = 0; while (index <= 100) { sum += index; index++; } Console.WriteLine(sum);
5050
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)
93994553510560 93994553510560 True 93994553510592 93994553510560 False
你還可以看看這篇文章: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
0 1 2 3 4
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 ...')
https://pan.baidu.com/s/1weaF2DGsgDzAcniRzNqfyQ end ...
9.2.Csharp
foreach (var i in name)
In [3]:
%%script csharp var url = "https://pan.baidu.com/s/1weaF2DGsgDzAcniRzNqfyQ#mmd"; foreach (var item in url) { if (item == '#') break; Console.Write(item); } Console.WriteLine("\n end ...");
https://pan.baidu.com/s/1weaF2DGsgDzAcniRzNqfyQ end ...
9.3.Python擴展(for else)
for的擴展:for else
(一般不太用)
官方參考:https://docs.python.org/3/reference/compound_stmts.html#the-for-statement
圖片出處: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
語句,而且可以使用函數字典映射和類的調度方法"
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 表達式:
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()
類的調度方法:
如果在一個類中,不確定要使用哪種方法,可以用一個調度方法在運行的時候來確定
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#基礎(逆天上學那會做的筆記)
其實有了Code,筆記也就沒啥用了,知識點直接Code驗證一下即可
作者:毒逆天
出處:https://www.cnblogs.com/dotnetcrazy
打賞:18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z
本文版權歸作者和博客園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接!