學習完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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...