1. 程式人生 > >Python(二)運算子與條件控制及while迴圈列印菱形

Python(二)運算子與條件控制及while迴圈列印菱形

#運算子

#算數運算子
# +  加		1+1結果為2
# -  減		1-1結果為0
# *  乘		2*2結果為4
# /  除		2/2結果為1
# %  取模	2%2結果為0
# ** 冪		2**2結果為4
# // 整除	2//2結果為1

#賦值運算子
a=2
a+=1 	#a=a+1
a-=1 	#a=a-1
a*=1 	#a=a*1
a**=3 	#a=a*a*a
a/=2 	#a=a/2
a//=3 	#a=a//3 除不盡時 取整
a%=2 	#取模 a=a%2
print(True-1) 	#結果為0,1-1=0  (True==1,False==0)
print(25**0.5) 	#開平方


#比較運算子
print(True==1)  # 等於號 結果為True  (True==1,False==0)
print("1">"0")  # 大於號 結果為True  可比較字串  根據雜湊值比較
print(1!=2)     # 不等於 結果為True  1不等於2
print(1<2)		# 小於號 結果為True	1小於2
print(2>=2)		# 大於等於 結果為True	  2大於或等於2
print(2<=2)		# 小於等於 結果為True	  2小於或等於2

#位運算子
#位運算子是把數字轉為二進位制來進行計算
# 運算子	描述	例項   
#a 為 60,b 為 13
#二進位制格式為
# a = 0011 1100

# b = 0000 1101

# &	按位與運算子:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0	(a & b) 輸出結果 12 ,二進位制解釋: 0000 1100
# a&b = 0000 1100

# |	按位或運算子:只要對應的二個二進位有一個為1時,結果位就為1。	(a | b) 輸出結果 61 ,二進位制解釋: 0011 1101
# a|b = 0011 1101

# ^	按位異或運算子:當兩對應的二進位相異時,結果為1	(a ^ b) 輸出結果 49 ,二進位制解釋: 0011 0001
# a^b = 0011 0001

# ~	按位取反運算子:對資料的每個二進位制位取反,即把1變為0,把0變為1。~x 類似於 -x-1	(~a ) 輸出結果 -61 ,二進位制解釋: 1100 0011, 在一個有符號二進位制數的補碼形式。
# ~a  = 1100 0011

# <<	左移動運算子:運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。	a << 2 輸出結果 240 ,二進位制解釋: 1111 0000
# >>	右移動運算子:把">>"左邊的運算數的各二進位全部右移若干位,">>"右邊的數指定移動的位數	a >> 2 輸出結果 15 ,二進位制解釋: 0000 1111

#邏輯運算子  and、 or、 not
# 以下假設變數 a 為 10, b為 20
# and	x and y	布林"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。	(a and b) 返回 20。
# or	x or y	布林"或" - 如果 x 是 True,它返回 x 的值,否則它返回 y 的計算值。	(a or b) 返回 10。
# not	not x	布林"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。	not(a and b) 返回 False
a = 10
b = 20
print(a and b) #結果為20
print(a<b and a==10) #結果為True,兩邊同時為True則為True

print(1==1 or 1>2) #結果為True  一邊為True在,則為True

print(not(1==1))  #1==1為True ,加上not則取非 True則變False,False變True

#三元運算
# 結果1 if 條件 else 結果2
print("1大於0") if 1>0 else print("1小於0")


#成員運算子 
# Python還支援成員運算子,測試例項中包含了一系列的成員,包括字串,列表或元組。

# in	如果在指定的序列中找到值返回 True,否則返回 False。	x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
# not in	如果在指定的序列中沒有找到值返回 True,否則返回 False。	x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

a = 1
b = 20
arr = [1, 2, 3, 4, 5 ];

if a in arr:
	print("arr中存在a變數") #在arr中找到變數a的值則輸出
else:
	print("arr中不存在a變數") #在arr沒有中找到變數a的值則輸出

if b not in arr:
	print("arr中不存在b變數") #在arr中沒有找到變數b的值則輸出
else:
	print("arr中存在b變數")#在arr中找到變數b的值則輸出



#身份運算子   身份運算子用於比較兩個物件的儲存單元
# is	is 是判斷兩個識別符號是不是引用自一個物件	x is y, 類似 id(x) == id(y) , 如果引用的是同一個物件則返回 True,否則返回 False
# is not	is not 是判斷兩個識別符號是不是引用自不同物件	x is not y , 類似 id(a) != id(b)。如果引用的不是同一個物件則返回結果 True,否則返回 False。

n = 20
m = 10
if ( n is m ):   # 也可 if ( 20 is 20 ): 
   print ("n 和 m 有相同的標識") #如果n和m裡的值相同
else:
   print ("n 和 m 沒有相同的標識") #如果n和m裡的值不相同

if ( id(n) == id(m) ):
   print ("n 和 m 有相同的標識") #如果n和m裡的值相同
else:
   print ("n 和 m 沒有相同的標識") #如果n和m裡的值不相同

m=20
if ( n is not m ):
   print ("n 和 m 沒有相同的標識") #如果n和m裡的值不相同
else:
   print ("n 和 m 有相同的標識") #如果n和m裡的值相同

#條件控制

#行與縮排
#Python使用縮排來表示程式碼塊,不需要{}
 
if True:
	print("True")
else:
	print("False")
# 結果為 True
 
# if True:
# 	print("True")
# else:
# 	print("False")
#  print(9) #此行程式碼縮排不一致,執行會報錯
#單獨一句程式碼必須頂格編寫 不然會報錯

#也可編寫為:

# if 條件:
# 	結果
# elif 條件:
# 	結果
# else:
# 	結果


#控制檯輸入

#name= input("請輸入你的姓名:")#控制檯輸入回車,會將輸入的值賦給name
#注意:因為控制檯輸入的值都是string型別,如果要做int型別使用要轉型別
#print(name)

#迴圈之while迴圈

i=1
while i<=9:
	j=1
	while j<=i:
		print(j,"*",i,"=",(j*i)," ",end="") #  j,"*",i,"=",(j*i)," " 為j*i=(j*i)【," "為在最後新增空格】     end=""為print不換行
		j+=1
	print()
	i+=1



#菱形
#-----------------上半部分
y=1
while y<10: #列印9行
	k=1
	p=1
	while k<10-y: #第一次八個空格
		print(" ",end="")
		k+=1
	while p<y*2: #第一次一個*
		print("*",end="")
		p+=1
	print("") #換行
	y+=1
#-----------------下半部分
y = 9
while y<10 and y>0:
	k=1
	p=1
	while k<=10-y: #第一次一個空格
		print(" ",end="")
		k+=1
	y-=1
	while p<=y*2-1:#1=8*2-1 第一次十五個*
		print("*",end="")
		p+=1
	print("")