from random import seed,randint
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括杭錦網(wǎng)站建設(shè)、杭錦網(wǎng)站制作、杭錦網(wǎng)頁(yè)制作以及杭錦網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,杭錦網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到杭錦省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
str_in=input('請(qǐng)輸入一個(gè)字符串:')
you_seed=input('請(qǐng)輸入密碼:')
you_seed=int(you_seed)
#lock
def my_lock(lock_str,lock_seed):
seed(lock_seed)
li_out=[]
for i in lock_str:
li_out.append(chr(ord(i)^randint(0,65535)))
return ''.join(li_out)
my_lock_str=my_lock(str_in,you_seed)
print('原字符串:',str_in)
print('加密字符串:',my_lock_str)
print('還原后字符串:',my_lock(my_lock_str,you_seed))
input()
#python 3.4
在Python" // "表示整數(shù)除法。
Python其它表達(dá)式:
Python的表達(dá)式寫法與C/C++類似。只是在某些寫法有所差別。
主要的算術(shù)運(yùn)算符與C/C++類似。+, -, *, /, //, **, ~, %分別表示加法或者取正、減法或者取負(fù)、乘法、除法、整除、乘方、取補(bǔ)、取余。
, 表示右移和左移。, |, ^表示二進(jìn)制的AND, OR, XOR運(yùn)算。, , ==, !=, =, =用于比較兩個(gè)表達(dá)式的值,
分別表示大于、小于、等于、不等于、小于等于、大于等于。在這些運(yùn)算符里面,~, |, ^, , , 必須應(yīng)用于整數(shù)。
擴(kuò)展資料:
Python使用and, or, not表示邏輯運(yùn)算。
is, is not用于比較兩個(gè)變量是否是同一個(gè)對(duì)象。in, not in用于判斷一個(gè)對(duì)象是否屬于另外一個(gè)對(duì)象。
Python支持“列表推導(dǎo)式”(list comprehension),比如計(jì)算0-9的平方和:
sum(x * x for x in range(10))
285
Python使用lambda表示匿名函數(shù)。匿名函數(shù)體只能是表達(dá)式。比如:
add=lambda x, y : x + y
add(3,2)
Python使用y if cond else x表示條件表達(dá)式。意思是當(dāng)cond為真時(shí),表達(dá)式的值為y,否則表達(dá)式的值為x。相當(dāng)于C++和Java里的cond?y:x。
Python區(qū)分列表(list)和元組(tuple)兩種類型。list的寫法是[1,2,3],而tuple的寫法是(1,2,3)??梢愿淖僱ist中的元素,而不能改變tuple。
在某些情況下,tuple的括號(hào)可以省略。tuple對(duì)于賦值語(yǔ)句有特殊的處理。因此,可以同時(shí)賦值給多個(gè)變量,比如:
x, y=1,2 # 同時(shí)給x,y賦值,最終結(jié)果:x=1, y=2
特別地,可以使用以下這種形式來(lái)交換兩個(gè)變量的值:
x, y=y, x #最終結(jié)果:y=1, x=2
Python使用'(單引號(hào))和"(雙引號(hào))來(lái)表示字符串。與Perl、Unix Shell語(yǔ)言或者Ruby、Groovy等語(yǔ)言不一樣,兩種符號(hào)作用相同。一般地,如果字符串中出現(xiàn)了雙引號(hào),就使用單引號(hào)來(lái)表示字符串;反之則使用雙引號(hào)。如果都沒有出現(xiàn),就依個(gè)人喜好選擇。
出現(xiàn)在字符串中的\(反斜杠)被解釋為特殊字符,比如\n表示換行符。表達(dá)式前加r指示Python不解釋字符串中出現(xiàn)的\。這種寫法通常用于編寫正則表達(dá)式或者Windows文件路徑。
Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的類型有str, bytes, list, tuple等。
它的語(yǔ)法是...[left:right]或者...[left:right:stride]。假定nums變量的值是[1, 3, 5, 7, 8, 13, 20],那么下面幾個(gè)語(yǔ)句為真:
nums[2:5] == [5, 7, 8] 從下標(biāo)為2的元素切割到下標(biāo)為5的元素,但不包含下標(biāo)為5的元素。
nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最后一個(gè)元素。
nums[:-3] == [1, 3, 5, 7] 從最開始的元素一直切割到倒數(shù)第3個(gè)元素。
nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改變新的列表不會(huì)影響到nums。
nums[1:5:2] == [3, 7] 從下標(biāo)為1的元素切割到下標(biāo)為5的元素但不包含下標(biāo)為5的元素,且步長(zhǎng)為2。
參考資料:
百度百科——Python(計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言)
leetcode上有這么一道題:【136. Single Number】
這個(gè)題是給出一個(gè)非空列表,里面的元素只有一個(gè)只出現(xiàn)了一次,其余都出現(xiàn)了兩次,找出這個(gè)只出現(xiàn)了一次的元素。
這個(gè)題目很簡(jiǎn)單,寫了一下直接提交:
翻了一下討論,發(fā)現(xiàn)了一個(gè)很簡(jiǎn)單快速的方法:
查了一下異或運(yùn)算,發(fā)現(xiàn)找到唯一值是異或運(yùn)算在python中的主要用途之一。其原理是這樣的:
輸出:70
當(dāng)a,b都轉(zhuǎn)換為二進(jìn)制:
輸出:0b1010與0b1001100
異或運(yùn)算是將兩個(gè)數(shù)相同位置(長(zhǎng)度不一時(shí)要對(duì)齊)的數(shù)值,不同為1時(shí),結(jié)果為1,否則為0 。比如:(0101) ^ (0011) = 0110。
這里a ^ b = 0b1000110,即70。
當(dāng)兩個(gè)數(shù)相同時(shí),異或運(yùn)算結(jié)果為0.
按位與
|
按位或
^
按位異或
1.
按位與運(yùn)算
按位與運(yùn)算符""是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相與。只有對(duì)應(yīng)的兩個(gè)二進(jìn)位均為1時(shí),結(jié)果位才為1
,否則為0。參與運(yùn)算的數(shù)以補(bǔ)碼方式出現(xiàn)。
例如:95可寫算式如下:
00001001
(9的二進(jìn)制補(bǔ)碼)00000101
(5的二進(jìn)制補(bǔ)碼)
00000001
(1的二進(jìn)制補(bǔ)碼)可見95=1。
按位與運(yùn)算通常用來(lái)對(duì)某些位清0或保留某些位。例如把a(bǔ)
的高八位清
,
保留低八位,
可作
a255
運(yùn)算
(
255
的二進(jìn)制數(shù)為0000000011111111)。
main(){
int
a=9,b=5,c;
c=ab;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
2.
按位或運(yùn)算
按位或運(yùn)算符“|”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相或。只要對(duì)應(yīng)的二個(gè)二進(jìn)位有一個(gè)為1時(shí),結(jié)果位就為1。參與運(yùn)算的兩個(gè)數(shù)均以補(bǔ)碼出現(xiàn)。
例如:9|5可寫算式如下:
00001001|00000101
00001101
(十進(jìn)制為13)可見9|5=13
main(){
int
a=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
3.
按位異或運(yùn)算
按位異或運(yùn)算符“^”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相異或,當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1。參與運(yùn)算數(shù)仍以補(bǔ)碼出現(xiàn),例如9^5可寫成算式如下:
00001001^00000101
00001100
(十進(jìn)制為12)
main(){
int
a=9;
a=a^15;
printf("a=%d\n",a);
}