淺談Python在信息學競賽中的運用及Python的基本用法

来源:http://www.cnblogs.com/SYCstudio/archive/2017/08/14/7360398.html
-Advertisement-
Play Games

淺談Python在信息學競賽中的運用及Python的基本用法 前言 眾所周知,Python是一種非常實用的語言。但是由於其運算時的低效和解釋型編譯,在信息學競賽中並不用於完成演算法程式。但正如LRJ在《演算法競賽入門經典 訓練指南》中所說的一樣,如果會用Python,在進行一些小程式的編寫,如數據生成器 ...


淺談Python在信息學競賽中的運用及Python的基本用法

前言

眾所周知,Python是一種非常實用的語言。但是由於其運算時的低效和解釋型編譯,在信息學競賽中並不用於完成演算法程式。但正如LRJ在《演算法競賽入門經典-訓練指南》中所說的一樣,如果會用Python,在進行一些小程式的編寫,如數據生成器時將會非常方便,它的語法決定了其簡約性。本文主要介紹一下簡單的Python用法,不會深入。

Python的安裝和實用

Linux(以Ubuntu系統為例)

一般的Linux都自帶了Python,在命令行中輸入Python即可進入
此處輸入圖片的描述
如果沒有出現上圖的文字,可以使用下麵的安裝方法:

sudo apt-get install python2.7 
sudo apt-get install python3.4
…………

Windows系統

(筆者目前在Ubuntu系統上,等有時間上Windows再補)

兩種使用Python的方法

直接在命令行中寫

因為Python是解釋型編譯,所以可以一行一行地在命令行中寫。這在初學時用來測試某個語句很實用。比如下麵這個例子:
此處輸入圖片的描述
>>>的後面輸入print "yyb love lrh",這條語句的作用是輸出一個字元串,然後我們就可以在後面看到結果了。確實輸出了一個字元串(不要在意內容)

文件

我們把Python代碼存在文件中,通常以.py結尾。比如下麵這個例子
我們在一個try.py中輸入下麵的代碼

print "hello world!"

然後在命令行中編譯python 文件名
此處輸入圖片的描述
我們發現其正確的輸出了。

Python的基本語法

下麵來介紹一些Python的基本語法

註釋

Python中的註釋分單行註釋和多行註釋

print "Hello world" #這是一個單行註釋
'''
這是多行註釋
是多行註釋
多行註釋
行註釋
註釋


'''

變數及類型

Python的變數聲明不需要指定類型
用=來給變數賦值,用法與C++一致。比如

yyb=141905 #這是一個整數
lrh=141936.0 #這是一個實數
str="This is a apple.I like apples.Apples are good for our health." #這是一個字元串

Python的字元串可以像字元數組一樣使用(就像C++一樣)比如

str="This is a apple.I like apples.Apples are good for our health."
print str[0] #輸出第一個字元
print str[2:] #輸出從第三個字元開始的字元串
print str[1:3] #輸出從第二個到第三個的字元串,註意是左開右閉

Python的列表可以看做是一個存下任何數據類型(可以混用!)的數組,比如

List=['%',19260817,'frog',666.6]
#調用
print List[0]
print List[2]

Python的字典可以看做是一個映射(類似於C++STL中的map),同樣可以混著用

Map={'name':'yyb','weight':'---','height':3.6}
#調用的時候可以
print Map['name']
print Map['yyb']

以上就是Python常用的幾種數據類型。
另:Python的數類型是非常大的,不需要手寫高精度

數據類型轉換(常見)

函數 轉換類型
int(a) 轉換成整數
long(a) 轉換成長整數
str(n) 轉換成字元串

標準輸入和輸出

使用print輸出。可以是任意類型(列表和字典都可以哦)

print 123
print 'helloworld'
print 123.2

使用input輸入。

number=input("read a int:")

運算符

+,-,×,/與其意義一致
**表示冪,a**b表示\(a^b\)
比較運算符(如==,!=,<>)與C++語言一致
位運算(如&,|.~)與C++語言一致

條件語句

即if,基本語法如下:

if a==b:
    print a+b

註意if後面的冒號,並且註意,Python是以縮進來判斷代碼塊的,也就是說如果要在if中執行多個操作,要這樣寫

if a==b:
    print a+b
    print b+a
    print a**b

while迴圈

與if的語法非常類似

i=1
while i<100:
    i=i+1

隨機數

數據生成器中最重要的就是隨機數啦,一般來說我會這麼寫

import random
a=int(random.uniform(1,100)) #這裡是生成[1,100]的隨機整數
#如果不加int強制轉換,將會生成隨機小數

一般而言,使用Python的好處就是不要像C++一樣指定隨機數種子,一般取系統時間。而在隨機生成數據對拍時1s內隨機數種子不會變,這樣會導致生成大量重覆數據。

文件操作

open用來打開文件
比如下麵這個例子

fin=open("read.txt","r") #打開一個文件讀入
fout=open("output.txt","w") #打開一個文件寫出
str=fin.read(10) #從read.txt中讀入長度為10的字元串
fout.write(str) #輸出str到output.txt中
# 註意輸入輸出都是字元串,所以如果要輸出一個整數要採用這種方式
a=100
fout.wrote(str(a))
fin.close()
fout.close()

進階內容

以上就是在競賽時常用的Python語法和技巧。但實際操作時難免會碰到其他問題,更多內容可以參考,你會更多地看到Python的方便之處
http://www.runoob.com/python/python-tutorial.html
另外需要註意的是,因為Python運行比較慢,如果要對拍的話,儘量不要寫Python版的。筆者一般只用Python寫數據生成器和簡單的小程式。
本人初學Python,如果還有錯誤,請諸位讀者大佬指出,感激不盡。
PS:後期可能會增加一些內容,有任何建議也可以在評論給出,謝謝


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

-Advertisement-
Play Games
更多相關文章
  • 由世紀互聯獨立運營的 Microsoft Azure 和 Office 365,作為首個落地中國市場的國際公有雲服務,在採用業界領先的微軟雲計算技術為客戶提供可信賴雲服務的同時,嚴格遵循國際和國內法律法規和標準規定,獲得多項權威認證,同時秉承安全性、隱私保護、合規性及透明度四項原則,為廣大用戶提供基... ...
  • MD5 Message Digest Algorithm MD5(中文名為消息摘要演算法第五版)為電腦安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。該演算法的文件號為RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA ...
  • 1. SMTP發送郵件 internet相關協議: http:網頁訪問相關,httplib,urllib,xmlrpclib ftp:文件傳輸相關, ftplib, urllib nntp:新聞和帖子相關, nntplib smtp:發送郵件相關, smtplib pop3:接收郵件相關, popl ...
  • import cn.XXXX.bos.utils.PinYin4jUtils; import org.apache.commons.lang3.StringUtils; @Action("areaAction_uploadFile") public String areaAction_uploadF... ...
  • 本文主要介紹使用pillow對圖像進行簡單處理,進而引出圖像處理與手寫識別的關係。 ...
  • 求100以內的質數。 ...
  • 題目描述 a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 求a數列的第n項對1000000007(10^9+7)取餘的值。 輸入輸出格式 輸入格式: 第一行一個整數T,表示詢問個數。 以下T行,每行一個正整數n。 輸出格式: 每行輸出一個非負整數表示答案。 輸入輸 ...
  • twisted網路框架的三個基礎模塊:Protocol, ProtocolFactory, Transport.這三個模塊是構成twisted伺服器端與客戶端程式的基本。Protocol:Protocol對象實現協議內容,即通信的內容協議ProtocolFactory: 是工廠模式的體現,在這裡面生 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...