Python3 與 C# 基礎語法對比(就當Python和C#基礎的普及吧)

文章彙總:https://www.cnblogs.com/dotnetcrazy/p/9160514.html

目錄:

 

文章彙總: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現在推薦,如果是單行,建議Codeif 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分爲 可變類型listdict,set等等)和 不可變類型intstrtuple等等)

像數字這類的是不可變類型(後面會繼續說)所以結果往往和你預期的不一樣哦~看個案例:

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

pythonfor循環,類似於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

for-else圖片

圖片出處: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#基礎(逆天上學那會做的筆記)

易忘知識點

C#基礎彙總

異常概況系

其實有了Code,筆記也就沒啥用了,知識點直接Code驗證一下即可

CodeBase ~ POP

CodeBase ~ OOP

 

作者:毒逆天

出處:https://www.cnblogs.com/dotnetcrazy

打賞:18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z

本文版權歸作者和博客園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章