用戶交互,運算符

  • 2021 年 1 月 29 日
  • 筆記

1.交互

1.1輸入input

用戶的input輸入任何內容,都存成字符串類型,然後賦值給等號左邊的變量名

username=input(‘請輸入你的姓名:’)

1.2輸出print

默認的print功能有一個end參數,該參數的默認值為「\n」,可以將end參數的值改成任意其它字符。

1.3格式化輸出

這是一個重點內容

把一段字符串裏面的某些內容替換掉之後再輸出,就是格式化輸出

2.格式化輸出字符串的4種方式

2.1 %號

2.1.1格式的字符串(%s)與被格式化的字符串(傳入的值)必須按照位置一一對應

print('%s asked %s to do something' %('han','xiaobei')

2.1.2通過字典的方式格式化,打破了位置帶來的限制與困擾

print('我的名字是%(name)s,我的年齡是%(age)s.' %{'age':'han','age':20})

kwargs={'name':'hange','age':25}
print('我的名字是%(name)s,我的年齡是%(age)s.' %kwargs)

2.2 str.format

該format方法是在Python2.6中引入的,是字符串類型內置方法,因str.format方式在性能和使用的靈活性上都比%好,所以推薦使用

2.2.1使用位置參數

按照位置一一對應
print('{} asked {} to do something'.format('han','xiaohan'))

2.2.2使用索引

#使用索引取對應位置的值
print('{0}{0}{1}{0}'.format('x','y'))   #xxyx
print('{1} ask {0} to do something'.format('han','xiaohan')) 

2.2.3 使用關鍵字參數or字典

#可以通過關鍵字or字典的方式格式化,打破了位置帶來的限制與困擾
print('我的名字是{name},我的年齡是{age}.'.format(name='xiaohan',age=20)
kwargs={'name':'xiaohan','age':20}
print('我的名字是{name},我的年齡是{age}.'.format(**kwargs))  #使用**進行解包操作

2.2.4 填充與格式化

#先取值,然後在冒號後設定填充格式
print('{0:*<10}'.format('開始執行'))    #*<10,左對齊,總共10個字符,不夠用*號填充
print('{0:*>10}'.format('執行完畢'))    #右對齊
print('{0:*^10}'.format('正在執行'))    #居中對齊 

2.2.5 精度與進制

print('{salary:.3f}'.format(salary=3.1415926)
print('{0:b}'.foramt(123))  轉為二進制
print('{0:o}'.format(9)     轉為八進制    #此處的0代表的的是後面的第1個索引的位置

2.3 f-Strings

f-string是以f或F開頭的字符串,核心在於字符串中符號{}的使用

name='xiaohan'
age=20
print(f'{name}is {age}')
print(F'{age} is {name}')

2.3.1 {}中可以是變量名

2.3.2 {}中可以是表達式

#可以在{}中放置任意合法的Python表達式,會在運行時計算
#如:數學表達式
	print(f'{3*3/2}')
#如:函數的調用 
def foo(n):
	print('foo say hello')
return n 
print(f'{foo(10)}')

#如:調用對象
name='han'
print(f'{name.lower()}')

3.基本運算符

3.1 算數運算符

如:+ – * / //(取整除) %(取余) **(冪)

3.2比較運算符

如:== != > 〉= < ≤

3.3賦值運算符

=,+=,-=,*=,/=,//=,%=,**=

3.4鏈式賦值

z=10
y=10
x=y
x,y,z
(10,10,10)

也要以寫為
x=y=z=10
print(x,y,z)
10,10,10

3.5 交叉賦值

m=10
n=20
m,n = n,m
print(m,n)       20,10

4.邏輯運算符

and or not 優先級為:not>and>or

  • 原理:1.not的優先級最高,就是把緊跟其後的那個條件結果取反,所以not與緊跟其後的條件不可分割
    • 2.如果語句中全部是用and連接,或者全部用or連接,那麼按照從左到右的順序依次計算即可
      • 3.如果語句既有and也有or,那麼先用括號把and的左右兩個條件括起來,然後再運算
 3>4 and 4>3 or 1==3 and 'x'=='x' or 3>3 可以轉化為:
(3>4 and 4>3) or (1==3 and 'x'=='x') or 3>3

5.成員運算符

in 和not in

'han' in ['han','xiaohan']
12 not in ['han','xiaohan']

6.身份運算符

is 和is not

  1. is 比較的是id,兩個對象的id相同則返回True
  2. 在兩個對象id不同時is not 會返回True