# \n 換行符
# 為什麼兩個print之間可以自動換行
# 在print定義時自動在結尾加上了'\n'所以每次打印結束後,會自動換行
print(123)
print('hello world \n')
print(456)
# 如果不想讓其自動換行, 在字符串輸入結束後,使用end = '結束符' 可以修改print打印結束後插入的字符
print(123, end='$$$')
print(456)
# \t 制表符
print('3 4\t5')
# %% 輸出%
# 在不適用字符串格式化拼接時,可以進行%的單獨輸出
print('我的業績增長了100%')
score = 100
# 在使用字符串格式化的時候,字符串中的%不能單獨輸出,必須配合占位符,或者使用%%進行輸出
print('我的成績增加了%d%%' % score)
# 轉譯字符:在字符串中,一般情況下n 或者 t這類字母沒有特殊含義,如果想給他賦予特殊含義,則需要使用\進行轉譯
# f-string是Python3.6以後推出的格式化方式
name = 'xiaoming'
age = 18
height = 1.85
weight = 69.5
score = 98
id = 12345678
# 格式化拼接上述變量
# 傳統拼接方式
print('學員的姓名是%s, 學員的年齡是%d, 學員的身高是%f, 學員的體重是%f, 學員的分數是%d%%, 學員的學號是%d' % (name, age, height, weight, score, id))
# 使用f-string進行字符串拼接
# 格式:f'要輸出的內容{變量}'
print(F'學員的姓名是{
name}, 學員的年齡是{
age}, 學員的身高是{
height}, 學員的體重是{
weight}, 學員的分數是{
score}%%, 學員的學號是{
id}')
# 修改格式:
print('學員的姓名是%s, 學員的年齡是%d, 學員的身高是%.2f, 學員的體重是%.3f, 學員的分數是%d%%, 學員的學號是%06d' % (name, age, height, weight, score, id))
# 如果需要調整精度
# {整數型變量:06d} 整型占六位,不足位用0補齊 d可以省略
# {浮點型變量:.2f} 浮點型保留兩位小數, 四捨五入
# %可以單獨輸出
print(F'學員的姓名是{
name}, 學員的年齡是{
age}, 學員的身高是{
height:.2f}, 學員的體重是{
weight:.3f}, 學員的分數是{
score}%, 學員的學號是{
id:06d}')
print(F'學員的姓名是{
name}, 學員的年齡是{
age}, 學員的身高是{
height:.2f}, 學員的體重是{
weight:.3f}, 學員的分數是{
score}%, 學員的學號是{
id:06}')
# 練習:
# 輸出自己的信息包括,姓名,年齡,身高(保留兩位小數),學號(保留6位,不足位用0補齊),使用f-string進行拼接
數據類型轉換是為了不同類型數據之間可以進行拼接或運算
格式:數據類型(要轉化類型的變量或值)
int和float類型直接可以隨意轉換
如果數值型轉換為str類型,可以隨意轉換
如果str類型轉換為數值型
# 需求: 在超市中有兩種水果,蘋果和橘子
# 讓售貨員輸入蘋果的單價,蘋果的重量,橘子的單價,橘子的重量,在控制台輸出購買詳情以及總價
# apple_price = input('請輸入蘋果的單價:')
# apple_weight = input('請輸入蘋果的重量:')
# orange_price = input('請輸入橘子的單價:')
# orange_weight = input('請輸入橘子的重量:')
# TypeError: can't multiply sequence by non-int of type 'str'
# 不同類型間的數據無法相乘
# 在此情況下,我們需要進行數據類型轉換(input接收的數據默認為字符串類型),需要轉化為float
# print(f'您購買了蘋果{apple_weight}kg, 單價{apple_price}元, 橘子{orange_weight}kg, 單價{orange_price}元, 總共需要付款{apple_price * apple_weight + orange_price * orange_weight}')
# 如果需要將數據轉換為float 就給其穿上float類型的衣服
# 格式: float(需要轉換數據類型的變量或者值)
# apple_price = float(input('請輸入蘋果的單價:'))
# apple_weight = float(input('請輸入蘋果的重量:'))
# orange_price = float(input('請輸入橘子的單價:'))
# orange_weight = float(input('請輸入橘子的重量:'))
#
#
# print(f'您購買了蘋果{apple_weight}kg, 單價{apple_price}元, 橘子{orange_weight}kg, 單價{orange_price}元, 總共需要付款{apple_price * apple_weight + orange_price * orange_weight}元')
int1 = 12
float1 = 14.9
str1 = '12'
str2 = '14.3'
str3 = 'python'
# 數據類型轉換的細節
# int float str類型之間的轉換
# int >> float
# int類型轉換為float類型將會在整數末尾加.0
print(float(int1))
print(type(float(int1)))
# float >> int
# float轉換為int類型,將會將小數部分去除,只保留整數部分
print(int(float1))
# int >> str
# int類型可以隨意轉換為str類型,但是輸出結果不發生改變,轉化為str類型後可以使用str類型的各種函數
print(str(int1))
# str >> int
# 字符串中是int類型數據,可以轉換為int類型
print(int(str1))
# ValueError: invalid literal for int() with base 10: '14.3'
# 字符串中是float類型數據,不可以轉換為int類型
# print(int(str2))
# ValueError: invalid literal for int() with base 10: 'python'
# 字符串中是字符型數據,不可以轉換為int類型
# print(int(str3))
# float >> str
# float類型可以隨意轉換為str類型,但是輸出結果不發生改變,轉化為str類型後可以使用str類型的各種函數
print(str(float1))
# str >> float
# 字符串中是int類型數據,則可以轉換為float類型數據,並且在末尾加.0
print(float(str1))
# 字符串中是float類型數據,可以轉換為float類型數據
print(float(str2))
# ValueError: could not convert string to float: 'python'
# 字符串中是字符型數據則不能轉換為float類型數據
print(float(str3))
+ - * / // % **
//
取商%
取余**
冪次運算# + - * / % // **
# 案例:求梯形的面積
# a = float(input('請輸入梯形的上底長度:'))
# b = float(input('請輸入梯形的下底長度:'))
# h = float(input('請輸入梯形的高:'))
#
# print(f'梯形的面積為{(a + b) * h / 2}')
# 算數運算符優先級可以使用小括號控制, 先乘除後加減,同級運算從左至右依次運算
float1 = 10.2
int1 = 4
int2 = 11
# +
# 數值型數據(float, int, bool)之間可以進行算數運算
print(int1 + float1)
# 了解 bool 可以參與算數運算 True 代表1 false 代表0
# print(int1 + True)
# -
# 同加法運算一致
# *
print(int1 * int2)
print(int1 * float1)
# /
print(int1 / int2)
print(int1 / float1)
# //(整除) 兩個數據相除 取商
# 11 / 4 商 2 余 3
print(int2 // int1) # 2
# %(取模 取余) 兩個數相除 取余
# 11 / 4 商 2 余 3
print(int2 % int1) # 3
# ** (冪次運算)
# 冪次運算就是求變量的多少次方
# 擴展int1 開根號等於幾 int1 ** 0.5
print(int1 ** 2)
# 在除法運算中,結果必定為浮點型
print(9 / 3) # 3.0
# 浮點型參與運算後,結果一定是浮點型
# 商 3 余 2.2
print(11.2 // 3) # 3.0
print(9.9 // 3.3) # 3.0
# print(0.1 + 0.2) # 0.30000000000000004
結論算數運算符優先級: + - < * / // % < **
如果忘記了也沒關系使用()提高運算符優先級即可
print(1 + 2 * 3)
# 先乘除 後加減
# //運算 優先級
print(2 + 11 // 3 ) # 優先級高於+ -
# // 與 * / 平級
print(2 * 11 // 3)
print(11 // 3 * 2)
# % 也和 * / 平級
print(2 + 11 % 3) # 優先級高於+ -
print(2 * 11 % 3)
print(11 % 3 * 2)
# ** 優先級 高於 * /
print(2 * 3 ** 2)
# 結論算數運算符優先級: + - < * / // % < **
# 如果忘記了也沒關系使用()提高運算符優先級即可
# = (在Python中等號不是判斷相等的而是賦值使用)
# 賦值格式: 變量名 = 值
# 給單個變量賦值
a = 1
# 同時給多個變量賦值
# 等號左側的變量數量一定要等於等號右側的值的數量, 否則報錯
name, age, gender = 'xiaoming', 18, '男'
# ValueError: not enough values to unpack (expected 3, got 2)
# name, age, gender = 'xiaoming', 18
print(name, age, gender)
# 同時給多個變量賦相同的值
# 此種情況前邊可以有多個變量,但是最後只能有一個值,否則報錯
a = b = c = 10
# a = b = c = 10 = 20
print(a, b, c)
# 等號左側一定要是變量,右側可以是值或者已經被定義的變量
int1 = 2
int2 = int1
print(int1, int2)
+= -= *= /= //= %= **=
復合賦值運算符等號左側一定是已經被定義的變量
復合賦值運算符右側是已經被定義的變量或者值
# += -= *= /= //= %= **=
a = 1
# a += 1 >>> a = a + 1 將a中的變量取出與1相加得到的數值賦值給a
a += 1
print(a)
# 符合賦值運算符等號左側只能是已經定義的變量
# 符合賦值運算符等號右側可以是已經定義的變量或者值
# NameError: name 'b' is not defined
# b必須已經被定義 b = b - 1 先計算b - 1 此時b必須存在
# b -= 1
# print(b)
# 復合賦值運算符不能連續使用
# a += 1 += 2
# 練習
a = 2
a *= 2
print(a)
b = 12
b //= 5
print(b)
< > <= >= == !=
# < > <= >= != ==
# 比較運算符運算結果為bool值,如果成立,則返回True 如果不成立則返回False
print(1 < 2) # True
print(5 > 6) # False
print(1 >= 0) # True
print(4 != 4) # False
# 比較運算符可以連續使用(Python中的特性)
age = 13
print(12 < age < 30) # True
# 不等號也可以連續使用
print(12 < age != 13) # False
# <> 不可以使用
# print(1 <> 3)
# 判斷是否相等使用==
print(age == 13) # True
print(age == 11) # False
# TypeError: 'age' is an invalid keyword argument for print()
# =是賦值運算不能判斷是否相等
# print(age = 12)
# and 同真即真
print(True and False) # False
print(True and True) # True
print(False and True) # False
print(False and False) # False
# or 同假即假
print(True or False) # False
print(True or True) # True
print(False or True) # False
print(False or False) # False
# not 真變假, 假變真
print(not True) # False
print(not False) # True
# 結論:邏輯運算符的運算結果都是bool類型數據
# 練習:
print(not(1 > 2 and 4 < 5))
# 短路運算:
a = 1
b = 2
# 當邏輯運算的第一個表達式已經可以決定整個邏輯運算的值的時候,後邊的表達式將不會被運行
print(a > b and a < b)
# 在數值型數據中,非0即真
# 在容器型數據中,非空即真
# None 代表False
print(False and 1) # False
print(0 and True) # 0
print(12 or False) # 12
print(None and True) # None
print(True and False) # False
print(True and 15) # 15
print(False or "") # ""
if 條件:
條件成立時執行的代碼
# 格式:
''' if 條件: 條件成立時執行的代碼 '''
age = int(input('請輸入你的年齡:'))
# 上網
if age >= 18:
print('小帥哥快來玩啊')
print('回家睡覺')
if 條件:
條件成立時執行的代碼
else:
條件不成立時執行的代碼
# if ... else ...
''' if 條件: 條件成立時執行的代碼 else: 條件不成立時執行的代碼 '''
# 使用分支語句,只有一個分支內的代碼會被執行
age = int(input('請輸入你的年齡:'))
if age >= 18:
print('小帥哥,快來玩啊')
else:
print('老板我就進去看別人玩')
print('回家睡覺')
if 條件1:
條件1成立時執行的代碼
elif 條件2:
條件2成立時執行的代碼
elif 條件3:
條件3成立時執行的代碼
else:
所有條件均不成立時執行的代碼
# 格式;
'''
if 條件1:
條件1成立時執行的代碼
elif 條件2:
條件2 成立時執行的代碼
elif 條件3:
條件3成立時執行的代碼
else:
所有條件均不成立時執行的代碼
'''
# 需求:搭讪,主要是為了問路
age = int(input('請輸入對方的年齡:'))
if age > 100 or age < 0:
print('數據錯誤')
elif 0<= age <= 18:
print('小妹妹你真可愛')
print('叔叔 我們不約而同的認為我很可愛')
elif 18< age <= 30:
print('美女,你真漂亮')
print('流氓')
elif 30 < age <= 60:
print('阿姨,我不想努力了')
print('瞧你長那樣')
else:
print('老奶奶,您真慈祥')
print('我北京三套房')
# 什麼樣的內容可以作為條件出現?
# bool值或者可以轉換為布爾值的數據或表達式
# 表達式:經過運算或者執行後,可以得到一個值的代碼塊或語句都是表達式
# 分支結構,循環結構,賦值,函數定義 不能作為條件出現
# if a = 1:
# print('qqwe')
# a = 1
# if if a==1:
# print()
# 分支語句中只有一個分支的命令會被執行
# 如果運行過程中其中一個條件成立,則後續所有條件不會進行判斷
age = int(input('請輸入對方的年齡:'))
if age > 100 or age < 0:
print('數據錯誤')
elif age <= 18:
print('小妹妹你真可愛')
print('叔叔 我們不約而同的認為我很可愛')
elif age <= 30:
print('美女,你真漂亮')
print('流氓')
elif age <= 60:
print('阿姨,我不想努力了')
print('瞧你長那樣')
else:
print('老奶奶,您真慈祥')
print('我北京三套房')
# 嵌套:在if語句控制的代碼塊中存在其他的if語句
# 需求: 如果有錢可以上車(money) 如果上車了又座位可以坐下(seat)
money = 12
seat = True
if money >= 2:
print('快上車,裡邊有大座')
if seat == True:
print('快坐下吧,別累著')
else:
print('我騙你的你能咋辦')
else:
print('窮鬼,跟著車跑吧,不等你')
# 判斷時正數負數 還是正奇數正偶數,負奇數,負偶數
# num = 12
# if num < 0:
# print('負數')
# if num % 2 == 0:
# print('負偶數')
# else:
# print('負奇數')
# else:
# print('正數')
# if num % 2 == 0:
# print('正偶數')
# else:
# print('正奇數')
num = -13
if num < 0:
print('負', end='')
if num % 2 == 0:
print('偶數')
else:
print('奇數')
else:
print('正', end='')
if num % 2 == 0:
print('偶數')
else:
print('奇數')
# 需求:
# 玩家鍵入拳型,電腦隨機出拳
# 比對玩家和電腦的拳型,如果玩家勝則輸出玩家獲勝,如果電腦獲勝則輸出電腦獲勝,如果平局則輸出平局
# # 玩家鍵入拳型
# player = int(input('請輸入您要出的拳型:(0 石頭 1 剪刀 2 布)'))
# # 電腦隨機出拳
# computer = 2
# # 比對拳型
# # 玩家獲勝情況: p: 0 c: 1 | p: 1 c: 2 | p : 2 c : 0
# if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player == 2 and computer == 0):
# # 輸出結果
# print('玩家獲勝')
# elif player == computer:
# # 輸出結果
# print('平局')
# else:
# # 輸出結果
# print('電腦獲勝')
''' p c 差值 0 0 0 平局 0 1 -1 p 0 2 -2 c 1 0 1 c 1 1 0 平局 1 2 -1 p 2 0 2 p 2 1 1 c 2 2 0 平局 找規律: 結果為0 平局 結果為 -1 或 2 玩家獲勝 結果為 -2 或 1 電腦獲勝 '''
# 玩家鍵入拳型
player = int(input('請輸入您要出的拳型:(0 石頭 1 剪刀 2 布)'))
# 電腦隨機出拳
# 在計算機中如果想要生成隨機數據可以使用random模塊進行生成
import random # 導入模塊
# 生成隨機數 random.randint(m,n) 生成[m, n]區間內的任意一個整數
computer = random.randint(0,2)
result = player - computer
# 比對拳型
# 玩家獲勝情況: p: 0 c: 1 | p: 1 c: 2 | p : 2 c : 0
if result == -1 or result == 2:
# 輸出結果
print('玩家獲勝')
elif result == 0:
# 輸出結果
print('平局')
else:
# 輸出結果
print('電腦獲勝')
# 三元運算符又叫三目運算
# 格式: 條件成立時返回的數據 if 條件 else 條件不成立時返回的數據
# 需求輸出a和b中的最大值
a = 4
b = 5
max1 = a if a > b else b
print(max1)