第一模塊:Python基礎(二)

来源:https://www.cnblogs.com/zhoukaivfx/archive/2019/04/23/10754079.html
-Advertisement-
Play Games

@ "TOC" 1.變數 變數用於存儲要在電腦程式中引用和操作的信息。它們的唯一目的是在記憶體中標記和存儲數據。然後可以在整個程式中使用這些數據。變數存儲在記憶體中的值。這就意味著在創建變數時會在記憶體中開闢一個空間。 基於變數的數據類型,解釋器會分配指定記憶體,並決定什麼數據可以被存儲在記憶體中。因此,變 ...


目錄

@(開發基礎)

1.變數

變數用於存儲要在電腦程式中引用和操作的信息。它們的唯一目的是在記憶體中標記和存儲數據。然後可以在整個程式中使用這些數據。變數存儲在記憶體中的值。這就意味著在創建變數時會在記憶體中開闢一個空間。
基於變數的數據類型,解釋器會分配指定記憶體,並決定什麼數據可以被存儲在記憶體中。因此,變數可以指定不同的數據類型,這些變數可以存儲整數,小數或字元。

聲明變數

name = "nepoleon"

定義變數的規則

  • 變數名只能是 字母、數字或下劃線的任意組合
  • 變數名的第一個字元不能是數字
  • 以下關鍵字不能聲明為變數名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

命名規則

  • 駝峰式
    MyName = "zzk" 每個單詞首字母大寫
  • 下劃線
    my_name = "zzk" 單詞用下劃線連接
  • 變數名,不要為中文,拼音,或者名字過長,詞不達意等

多個變數賦值

a = b = c = 3 

多個變數指定多個變數

a,b,c = 1,"tom",666

常量

常量即指不變的量,如pai 3.141592653..., 或在程式運行過程中不會改變的量

在Python中沒有一個專門的語法代表常量,程式員約定俗成用變數名全部大寫代表常量

NUMERBER = 56

在c語言中有專門的常量定義語法,const int count = 60;一旦定義為常量,更改即會報錯

2.用戶交互和註釋

程式交互

讀取用戶輸入

name = input("What is your name?")
print("My name is",name)

讓用戶輸入多個信息

name = input("What is your name?:")
age = input("Your age:")
hometown = input("Where is your hometown?")

print('''My name is %s,\nmy age is %s,\nmy hometown is %s''' %(name,age,hometown))

輸出的結果為:

My name is,zk,
my age is 22,
my hometown is anhui

註釋

代碼註釋分單行和多行註釋, 單行註釋用#,多行註釋可以用三對雙引號""" """

def subclass_exception(name, parents, module, attached_to=None):
    """
    Create exception subclass. Used by ModelBase below.

    If 'attached_to' is supplied, the exception will be created in a way that
    allows it to be pickled, assuming the returned exception class will be added
    as an attribute to the 'attached_to' class.
    """
    class_dict = {'__module__': module}
    if attached_to is not None:
        def __reduce__(self):
            # Exceptions are special - they've got state that isn't
            # in self.__dict__. We assume it is all in self.args.
            return (unpickle_inner_exception, (attached_to, name), self.args)

        def __setstate__(self, args):
            self.args = args

        class_dict['__reduce__'] = __reduce__
        class_dict['__setstate__'] = __setstate__

    return type(name, parents, class_dict)

代碼註釋原則:

  • 不用全部把代碼都註釋,只需要把重要的,或者不好理解的註釋一下
  • 註釋可以是中文,英文,但不要是拼音

# 3.基本的數據類型
### 什麼是數據類型
我們人類可以很容易的分清數字與字元的區別,但是電腦並不能呀,電腦雖然很強大,但從某種角度上看又很傻,除非你明確的告訴它,1是數字,“漢”是文字,否則它是分不清1和‘漢’的區別的,因此,在每個編程語言里都會有一個叫數據類型的東東,其實就是對常用的各種數據類型進行了明確的劃分,你想讓電腦進行數值運算,你就傳數字給它,你想讓他處理文字,就傳字元串類型給他。
### 數字
#### int(整型)
在32位機器上,整數的位數為32位,取值範圍為-2^31^~ 2^31^-1,即-2147483648~2147483647

在64位系統上,整數的位數為64位,取值範圍為-2^63^~2^63^-1,即-9223372036854775808~9223372036854775807
#### long(長整型)
在Python3里不再有long類型了,全都是int

>> a = 2**64
>> type(a)

>>  <class 'int'>

#### 浮點型
浮點數是屬於有理數中某特定子集的數的數字表示,在電腦中用以近似表示任意某個實數。具體的說,這個實數由一個整數或定點數(即尾數)乘以某個基數(電腦中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學計數法。

python的浮點數就是數學中的小學,(無限迴圈小數或者有限小數)

為什麼要叫做float浮點型?

浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,
一個浮點數的小數點位置是可變的,比如,
1.23109和12.3108是相等的。
浮點數可以用數學寫法,如1.23,3.14,-9.01,等等。但是對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代:
1.23*109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。
整數和浮點數在電腦內部存儲的方式是不同的,整數運算永遠是精確的而浮點數運算則可能會有四捨五入的誤差。

複數

複數complex是由實數和虛數組成的

要瞭解複數,其實關於複數還需要先瞭解虛數。虛數(就是虛假不實的數):平方為複數的數叫做虛數。

複數是指能寫成如下形式的數a+bi,這裡a和b是實數,i是虛數單位(即-1開根)。在複數a+bi中,a稱為複數的實部,b稱為複數的虛部(虛數是指平方為負數的數),i稱為虛數單位。

當虛部等於零時,這個複數就是實數;當虛部不等於零時,這個複數稱為虛數。

註,虛數部分的字母j大小寫都可以。

字元串

字元串是有有序的,不可變的
在python中加了引號的都認為是字元串

name = "nep"  #  雙引號
age = "22"    # 字元串
n_age = 22    # int
hometown = ''' Anhui '''   #三引號
job = 'vfx'   # 單引號

單引號,雙引號沒有區別,多行註釋必須用三引號

轉譯

  • 字元串的單引號和雙引號都無法取消特殊字元的含義,如果想讓引號內所有字元均取消特殊意義,在引號前面加r,如name=r'l\thf'

  • unicode字元串與r連用必需在r前面,如name=ur'l\thf'

    字元串的操作

s = "hello word"
#索引
s = 'hello'
>>> s[1]
'e'
>>> s[-1]
'o'
#切片
>>> s = 'abcdefghigklmn'
>>> s[0:7]
'abcdefg'
>>> s[7:14]
'higklmn'
>>> s[:7]
'abcdefg'
>>> s[7:]
'higklmn'
>>> s[:]
'abcdefghigklmn'
>>> s[0:7:2]
'aceg'
>>> s[7:14:3]
'hkn'
>>> s[::2]
'acegikm'
>>> s[::-1]
'nmlkgihgfedcba'
len(s)      # 字元串的長度
s.swapcase()    # 大小寫互換
s.capitalize()  # 首字母大寫
s.casefold()    #全部統一都是小寫
s.center()      # 居中顯示 例如 print(s.center(30,"#"))
s.count()       # 統計某個字元的個數,空格也算是一個字元, s.count("o",0,5) 0-5之間"o"的個數。
s.endswith()    # 判斷以什麼結尾,返回 True/False
s.strip()       #去掉字元串的空格
s.lstrip()    # 去掉左側空格
s.rstrip()    #去掉右側的空格
isdigit()  #判斷是否是數字
s.title()  # 每個單詞的首字母大寫
islower()  #判斷是否是全部小寫

isupper() #判斷是否是全部大寫

lower()  #全部轉換為小寫

upper() #全部轉換為大寫

isspace()  #判斷是否是全都是空格

istitle() #判斷是否是標題(首字母大寫)  

expandtabs() 擴展tab鍵,前提是字元串里有tab鍵

a = "a\tb\tc"            # \t 就是tab鍵
print(a.expandtabs(8))  # 每個字元之間8個空格

find() 查找字元的索引位置,如果是負數,代表查找失敗,find()也可以查起始

s = "Hello,word"
s.find("o",0,5)

index() 返回索引值 與find()的區別

s.index("a")   # a 不在 字元串s裡面,返回報錯,find()沒有不會報錯,輸出-1

format() 字元串格式化

s14 = "my name is {0},i am {1} years old"
s14.format("Tom",23)
# 還可以這樣
s15 = "my name is {name},i am {years} years old"
s15.format(name = "zk","years" = 22)

join() 接兩個字元串

a = "-"
name = ["tom","san","kite"]
s = "abcde"
print(a.join(name))   # 輸出 tom-san-kite

print(a.join(s))  # a-b-c-d-e

ljust() 左側開始對齊到多少位

s = "hello word"
s.ljust(30,"-")   # 左往右 30個字元,後面都是 - 

replace() 替換字元

a = "hello word"
a.replace("o","-")  #  全部替換 o
a.replace("o","-",1)  # 給第一個 o 替換

split() 分割,返回列表。
在這裡插入圖片描述

布爾型(bool)

布爾類型很簡單,就兩個值 ,一個True(真),一個False(假), 主要用記邏輯判斷

a = 3 
b =5
a < b   # 成立 就是True
True
a > b  # 不成立就是 False
False

bool型只有兩個值:True和False

之所以將bool值歸類為數字,是因為我們也習慣用1表示True,0表示False。

格式化輸出

以下為不同方法的格式化

  • input做用戶輸入, +連接2個字元串
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: Nepoleon Chou

name = input ("name:")
age = input("age:")
job = input("job:")

info = '''
--------------info of '''+ name +''''-----------------
Name: ''' + name + '''
Age: ''' + age + '''
Job:'''  + job

print(info)
  • 上面寫法太繁瑣,我們可以用%s,%d做格式化輸出,可以這些寫:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: Nepoleon Chou

# 格式化輸出 %s s代表string
# %d 代表只能輸入數字  %f 浮點
name = input ("name:")
age = int(input("age:"))
job = input("job:")
salary = input("salary:")

info = '''
--------------info of %s-----------------
Name: %s
Age:  %d     
job:  %s
Salary: %s
 '''% (name,name,age,job,salary)
print(info)
  • 還可以用.format來格式化輸出,以後用的比較多:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: Nepoleon Chou
name = input ("name:")
age = int(input("age:"))
job = input("job:")
salary = input("salary:")
info2 = '''
----------------info of {_name}------------
Name = {_name}
Age = {_age}
job = {_job}
Salary = {_salary}

''' .format(_name=name,
            _age=age,
            _job=job,
            _salary=salary)
print(info2)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: Nepoleon Chou
name = input ("name:")
age = int(input("age:"))
job = input("job:")
salary = input("salary:")
info3 = '''
---------------info of {0}----------
Name = {0}
Age = {1}
Job = {2}
Salary = {3}
''' .format(name,age,job,salary)
print(info3)

運算符

電腦可以進行的運算有很多種,可不只加減乘除這麼簡單,運算按種類可分為算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天我們暫只學習算數運算、比較運算、邏輯運算、賦值運算

算術運算

在這裡插入圖片描述

比較運算符

在這裡插入圖片描述

賦值運算:

在這裡插入圖片描述

邏輯運算

在這裡插入圖片描述

身份運算

在這裡插入圖片描述

while 迴圈

Python 編程中 while 語句用於迴圈執行程式,即在某條件下,迴圈執行某段程式,以處理需要重覆處理的相同任務。
執行語句可以是單個語句或語句塊。判斷條件可以是任何表達式,任何非零、或非空(null)的值均為true。
當判斷條件假false時,迴圈結束。
在這裡插入圖片描述
使用while猜年齡:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: Nepoleon Chou

# 猜年齡 只能猜3次,3次之後就退出


Age_of_Nepoleon = 24

count = 0                                        #0開始計數
while True:                                      #當條件滿足
    if count == 3:                               #如果輸入3次
        break
    count += 1
    guess_age = int(input("Age_of_Nepoleon:"))
    if guess_age == Age_of_Nepoleon:
        print("yes,You are Right!")
        break
    elif guess_age > Age_of_Nepoleon:
        print("No,it's too bigger")
    else:
        print("No,it's too smaller")
        

優化以上代碼:

Age_of_Nepoleon = 24

count = 0
while count<3:

    count += 1
    guess_age = int(input("Age_of_Nepoleon:"))
    if guess_age == Age_of_Nepoleon:
        print("yes,You are Right!")
        break
    elif guess_age > Age_of_Nepoleon:
        print("No,it's too bigger")
    else:
        print("No,it's too smaller")

else:
    print("you have tried much time...breakDown")

while 語句時還有另外兩個重要的命令 continue,break 來跳過迴圈,continue 用於跳過該次迴圈,break 則是用於退出迴圈,此外"判斷條件"還可以是個常值,表示迴圈必定成立,具體用法如下:

# continue 和 break 用法
 
i = 1
while i < 10:   
    i += 1
    if i%2 > 0:     # 非雙數時跳過輸出
        continue
    print i         # 輸出雙數2、4、6、8、10
 
i = 1
while 1:            # 迴圈條件為1必定成立
    print i         # 輸出1~10
    i += 1
    if i > 10:     # 當i大於10時跳出迴圈
        break

無限死迴圈
如果條件判斷語句永遠為 true,迴圈將會無限的執行下去,如下實例:

#!/usr/bin/env python

count = 0
while True:
    print("你好",count)
    count+=1

for 迴圈

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: Nepoleon Chou

for i in range(0,10,2):    #每2個輸出一個
    print("loop",i)

continue ,break來跳過迴圈,continue是跳過本次迴圈,berak結束所有的迴圈。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: Nepoleon Chou

for i in range(0,10):    #每2個輸出一個
    if i <7:
        continue      #遇到小於7的直接跳過去
    elif i == 9:
        break         #等於9的時候跳出迴圈
    print("loop",i)

if...else

if 條件:
滿足條件執行代碼
elif 條件:
上面的條件不滿足就走這個
elif 條件:
上面的條件不滿足就走這個
elif 條件:
上面的條件不滿足就走這個
else:
上面所有的條件不滿足就走這段

輸入密碼時,如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: Nepoleon Chou

import getpass
# 密文模塊

username = input('username:')
password = getpass.getpass('password:')        #密文
#password = input('password:')         #明文

_username = 'Nepoleon'
_password = '1234'

if _username == username and _password == password:                #如果輸出的用戶名和密碼跟用戶設置的用戶名和密碼匹配
    print('Welcome user {name} login...' .format(name=username))
else:
    print('Invalid username or password!')

print(username,password)

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

-Advertisement-
Play Games
更多相關文章
  • [TOC] 引入 大家先考慮一個場景, 有一個整形數組, 我們希望通過調用一個工具類的排序方法就能對該數組進行排序. 請看下麵的代碼:   Comparable介面的來龍去脈 通過上面的代碼, 我們能夠輕易地對整形數組進行排序, 那麼如果現在有了新需求, 需要對浮點類型數據進行排序, 排序 ...
  • 多態 什麼是多態 指的是同一類/種事物的不同形態(其實就是繼承關係的表現) 為何要用多態 多態性:在多態的背景下,可以在不用考慮對象具體類型的前提下而直接使用對象 多態性的精髓:統一 這就好比開奧迪車,寶馬車和奇瑞qq,開的都是車,學開車不是學開某一輛車。 父類定義了,以後子類需要使用父類的功能,直 ...
  • 配置類: 調用: ...
  • 上一次我們已經通過代碼,簡單的認識了工廠方法模式,具體的思路請移步到 "設計模式之工廠模式(二)" ,進行查看。這次,讓我們通過設計模式的思想,來好好認識下工廠方法模式。 創建者和產品 所有工廠模式都用來封裝對象的創建。工廠方法模式(Factory Method Pattern)通過讓子類決定該創建 ...
  • log4j log4j log4j.rootLogger=INFO, stdout log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.app ...
  • 文章首發: "結構型模式:橋接模式" 七大結構型模式之二:橋接模式。 簡介 姓名 :橋接模式 英文名 :Bridge Pattern 價值觀 :解耦靠我 個人介紹 : Decouple an abstraction from its implementation so that the two ca ...
  • 前言: 這是一篇面向對象作業總結,作業內容是模擬電梯調度,一共有三個階段,具體要求不詳述,第一階段只要求先來先服務電梯,第二次支持捎帶,第三次則需要多部電梯協調,通過換乘來完成請求。本次作業在優化方面效果不佳。設計比較統一,設計原則檢查放在最後。 第5次作業 類圖如下: 說明: 具體的來說,M是主入 ...
  • 騰訊雲伺服器 點擊添加紀錄,紅色框框裡面填寫自己的公網IP即可。 阿裡雲上搭建php+mysql服務,並使用ftp將本地php文件及資料庫文件上傳到伺服器 先搭建php+MySQL環境 下載 "xampp" 。 XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的建站集成軟體包。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...