學習完C和C++後初識python

来源:https://www.cnblogs.com/kai-huang/archive/2023/05/27/17436096.html
-Advertisement-
Play Games

今天大概是對python的數據類型等基礎部分進行了簡單的瞭解,同時鞏固了C和C++中忽略的一些問題。 首先是對轉義字元的認識。之前沒有太在意過這些問題,一般只用到"\n"表示換行,因為在C和C++中,貌似換行必須用到"\n"。在python中當然也可以,不過python還有一個好處就是如果你將pri ...


     今天大概是對python的數據類型等基礎部分進行了簡單的瞭解,同時鞏固了C和C++中忽略的一些問題。

   首先是對轉義字元的認識。之前沒有太在意過這些問題,一般只用到"\n"表示換行,因為在C和C++中,貌似換行必須用到"\n"。在python中當然也可以,不過python還有一個好處就是如果你將print()函數分成兩行寫,編譯器會自動幫你換行;之後就是關於“\t”,即水平製表符的理解。水平製表符會先判斷“\t”之前的字元個數除以4的餘數,設為n,而該操作就可以將從該位置向後空出(4-n)個位置;接著是關於“\r”,該轉義字元可以用“\r”後面的內容覆蓋前面的,也就是說,遇到“\r”,游標會回顯到該行的開頭(此處也聯想到換行符和回車符的區別);接著是關於“\b”,這個就比較簡單了,可以刪掉“\b”前面的一個字元。

  接著是有關二進位與字元編碼的問題。中國的漢字也是由二進位存儲的。在python中,利用chr()函數,例如:chr(0b100111001011000)就表示漢字“乘”(0b表示二進位,0o表示八進位,0x表示十六進位)。與之相對的,ord()函數可以將漢字轉換成其對應的十進位的數。同時,我們瞭解到,python2中的漢字採用的是gbk編碼,而python3採用的是utf-8編碼,如果需要轉換,可以在一行中寫入“#coding:gbk”。

  接著是關於python中如何查找地址和數據類型的。地址在C語言中想要列印出來,需要用%p,而在python中只需要用id(變數名);同時,在C和C++中,定義變數的時候就必須指明數據類型,而在python中不需要,並且可以通過type(變數名)來查看數據類型。當然,提到數據類型,就必須要提到數據類型的種類。在python中,目前知道的主要類型就是整數類型,浮點類型,布爾類型和字元串類型,這跟C和C++幾乎一樣。重點強調浮點類型,由於電腦採用二進位存儲,在計算浮點數的時候常常會出現誤差。因此,最好加上下麵這行代碼:from decimal import Decimal   。這樣,例如在運算1.1+2.2的時候,就可以使用Decimal('1.1')+Decimal('2.2')算出3.3了。在python中,布爾類型也是非常“自由的”。例如True可以直接與整數1相加得到2,False與整數1相加得到1等等。關於字元串類型,有一個小的點,就是使用’ ‘(單引號)和” “(雙引號)字元串不能分兩行,而使用” “ ”(三引號)就可以分兩行書寫字元串。

  當然,提到了數據類型,肯定還得提數據類型之間的轉換。在C和C++中,由於定義變數的時候就需要寫出類型名稱,所以一般叫做“強制類型轉換”。而在python中,不需要你寫出類型名稱,類型都是編譯器幫你定好的。也正是因為如此,編譯器定的類型往往不是我們所需要的,所以說我們需要用到類型轉換,即int(變數名),str(變數名),float(變數名)。在數據類型轉換中也要註意一些問題。例如當字元串型和整型混在一起時:name='張三'   age=20   print('我叫'+name+',今年'+age+'歲') ,這裡面,用print輸出時,+表示在前一個輸出的後面接著輸出下一個。當然,這行代碼是錯誤的,因為age和name的數據類型不一樣,因此需要將age改為str(age)。除此之外,當字元串想要轉換成整數類型時,必須要保證字元串內是一個整數,否則無法轉換成功。

  還有就是對input()函數的瞭解,這個函數類似於C語言中的scanf+gets()以及C++中的cin+gets()。書寫的格式也很簡單:如a=input()。但是有一點需要註意,就是由於一開始沒有設定數據類型,所以你在控制臺上輸入的數據都會預設為字元串型(python3中),這就需要你進行類型轉換。如增添一行a=int(a)。

  下麵是關於賦值的問題。在,python,C和C++中都存在鏈式賦值,如a=b=c=20(強調一下,該情況下三個數的地址相同);但是在Python中,還存在系列解包賦值,如a,b,c=10,20,30,但是必須保證左右兩邊的數的個數相同。需要交換兩個數時,直接使用:a,b=b,a。這樣不僅方便,而且相較於C和C++,該賦值方法不僅實現了值傳遞,而且實現了址傳遞,避免了C和C++中指針或引用帶來的麻煩。

  下麵的內容就很雜啦。如採用比較運算符時,返回的值是布爾類型;還有就是is和==的區別:is比較的是兩者的地址,==比較的是兩者的值,如兩個列表list1=[11,22,33,44],     list2=[11,22,33,44],這兩者的值相同,但是地址不同,所以print(list1==list2)返回值是True,而print(list1 is list 2)返回值就是False,而在中間加入not,即print(list is not list2)返回值就是True了。這個“not”也可以對布爾類型取反,即可以print(not False)。還有就是關鍵詞"in"和“not in”,字面意思,就是是否在其中。如a='helloworld',那麼print('e' in a)返回值就是True,而print('e' not in a)返回值就是False。還有關於位運算的一些符號。這個在C和C++中略有接觸,但由於上課老師不講,考試也不考,所以也沒有進行過多的研究。這塊的內容也不多,有四個主要的運算符:&,|,<<和>>。先把數寫成二進位的模式,然後按位進行計算即可。<<(左移運算符):高位溢出,低位補0;>>(右移運算符):低位溢出,高位補0。位運算在往年藍橋杯的一道題中有所運用,大概是用二進位0和1來判斷迴圈的次數以及是否選中該數的問題(0表示未選中,1表示選中)。還有就是關於python註釋的問題。一行中註釋可以用#,整個一起註釋既可以選中想要註釋的,並按ctrl+/;也可以將想註釋的內容前後加上三引號。

  本人第一次寫博客,難免有很多寫的不准確的地方,望指正,謝謝。

  

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## IO流(input/output) ​ 數據運輸的載體或者中間鍵 ### 位元組流 #### 輸入位元組流(FileInputStream) ​ 以位元組為最小單元,讀取任何類型的文件,但是要註意字元集類型的轉換。 ```Java public static void testFileInputSt ...
  • 哈嘍大家好,今天我們來獲取一下某個生活平臺網站數據,進行可視化分析。 採集58的數據可以使用Python的requests庫和beautifulsoup庫,數據可視化分析可以使用matplotlib庫和seaborn庫。下麵是一個簡單的例子: 1、首先導入需要使用的模塊 import request ...
  • 摘要:如果希望將 JSON 文件導入到 Redis 中,首先要做的就是連接到 redis 服務。 本文分享自華為雲社區《Python將JSON格式文件導入 redis,多種方法》,作者: 夢想橡皮擦 。 在導入前需要先確定你已經安裝 Redis,並且可以啟動相關服務。 windows 上啟動 red ...
  • 好久都沒有寫點東西了,是時候有點寫東西的必要了。 去年下年底離職了,躺了幾個月,最近又兜兜轉轉換了一家公司繼續當牛馬了,前段時間八股文背了好多,難受呀,不過我也趁著前段時間自己也整理了屬於我自己的八股文,有好幾萬字吧,哈哈哈,以後就不用到處去找八股文了。 說回正題,這個group_concat的問題 ...
  • 數據類型是電腦編程中將不同類型的數據值分類和定義的方式。 通過數據類型,可以確定數據的存儲方式和記憶體占用量,瞭解不同類型的數據進行各種運算的能力。 使用`pandas`進行數據分析時,最常用到的幾種類型是: 1. 字元串類型,各類文本內容都是字元串類型 2. 數值類型,包括整數和浮點數,可用於計算 ...
  • # 一、什麼是ByteBuf 我們前面說過,網路數據的基本單位總是位元組。Java NIO 提供了 ByteBuffer 作為它的位元組容器,但是這個類使用起來過於複雜,而且也有些繁瑣。**ByteBuffer 替代品是 ByteBuf**,一個強大的實現,既解決了 JDK API 的局限性,又為網路應 ...
  • 網游找Call的過程中難免會遇到不方便通過數據來找的或者僅僅查找數據根本找不到的東西,但是網游中一般的工程肯定要發給伺服器,比如你打怪,如果都是在本地處理的話就特別容易產生變態功能,而且不方便與其他玩家通信,所以找到了游戲發包的地方,再找功能就易如反掌了。 在游戲逆向過程中,通常會遇到下麵幾種情況的 ...
  • # Rust Tips 比較數值 ### 內容 - 比較與類型轉換 - 浮點類型比較 ### 可以用這些運算符比較數值 `> = <=` ### 無法比較不同類型的值 ```rust fn main() { let a: i32 = 10; let b: u16 = 100; if a < b { ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...