【2020Python修炼记7】Python语法入门[4]_与用户交互、运算符

【2020Python修炼记7】Python语法入门[4]_与用户交互、运算符

一、与用户交互

1、接收用户的输入

在Python3中,input会将用户的所有输入内容都存为字符串类型

>>> 
>>> username = input("请输入您的账号:")
请输入您的账号:CC
>>> print(username, type(username))
CC <class "str">
>>> 
>>> age = input("请输入的你的年龄: ")
请输入的你的年龄: 18
>>> 
>>> print(age, type(age))
18 <class "str">
>>> age=int(age)
>>> print(age > 16)
True
>>> 
>>> int("12345")   # int只能将纯数字的字符串转成整型
12345
>>> 
>>> int("1234.5")
Traceback (most recent call last):
  File "<pyshell#177>", line 1, in <module>
    int("1234.5")
ValueError: invalid literal for int() with base 10: "1234.5"
>>> int("1234abc5")
Traceback (most recent call last):
  File "<pyshell#178>", line 1, in <module>
    int("1234abc5")
ValueError: invalid literal for int() with base 10: "1234abc5"
>>> 

 

在Python2中,用户输入什么类型,就保存为什么类型

# raw_input():用法与python3的input一模一样
# input(): 要求用户必须输入一个明确的数据类型,输入的是什么类型,就存成什么类型 

>>> age=input(">>>>>>>>>>>>>>>>>>>>>: ")
>>>>>>>>>>>>>>>>>>>>>: 18
 >>> age,type(age)
(18, <type "int">)
>>>
>>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
>>>>>>>>>>>>>>>>>>>>>: 1.3
>>> x,type(x)
(1.3, <type "float">)
>>>
>>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
>>>>>>>>>>>>>>>>>>>>>: [1,2,3]
>>> x,type(x)
 ([1, 2, 3], <type "list">)
>>>

 

 2、格式化输出

 2.1—— %


值按照位置与%s一 一对应,少一个不行,多一个也不行

>>> res="my name is %s my age is %s" %("egon","18")
>>> print(res)
my name is egon my age is 18
>>> res="my name is %s my age is %s" %("18","egon")
>>> print(res)
my name is 18 my age is egon
>>> res="my name is %s" %"egon"
>>> print(res)
my name is egon

以字典的形式传值,打破位置的限制

>>> 
>>> res="我的名字是 %(name)s 我的年龄是 %(age)s" %{"age":"18","name":"egon"}
>>> print(res)
我的名字是 egon 我的年龄是 18
>>> 

%s可以接收任意类型,%d只能接收int

>>> 
>>> print("my age is %s" %18)
my age is 18
>>> 
>>> print("my age is %s" %[1,23])
my age is [1, 23]
>>> 
>>> print("my age is %s" %{"a":333})
my age is {"a": 333}
>>> print("my age is %d" %18) # %d只能接收int
my age is 18
>>> 
>>> print("my age is %d" %"18")
Traceback (most recent call last):
  File "<pyshell#202>", line 1, in <module>
    print("my age is %d" %"18")
TypeError: %d format: a number is required, not str
>>> 

2.2 ——str.format:兼容性好

按照位置传值

>>> 
>>> res="我的名字是 {} 我的年龄是 {}".format("egon",18)
>>> print(res)
我的名字是 egon 我的年龄是 18
>>> 
>>> res="我的名字是 {0}{0}{0} 我的年龄是 {1}{1}".format("egon",18)
>>> print(res)
我的名字是 egonegonegon 我的年龄是 1818
>>> 

打破位置的限制,按照key=value传值

>>> 
>>> res="我的名字是 {name} 我的年龄是 {age}".format(age=18,name="egon")
>>> print(res)
我的名字是 egon 我的年龄是 18
>>> 

 

了解知识——

【填充与格式化】
# 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度] # *<10:左对齐,总共10个字符,不够的用*号填充 print("{0:*<10}".format("开始执行")) # 开始执行****** # *>10:右对齐,总共10个字符,不够的用*号填充 print("{0:*>10}".format("开始执行")) # ******开始执行 # *^10:居中显示,总共10个字符,不够的用*号填充 print("{0:*^10}".format("开始执行")) # ***开始执行***
【精度与进制】
print("{salary:.3f}".format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124 print("{0:b}".format(123)) # 转成二进制,结果为:1111011 print("{0:o}".format(9)) # 转成八进制,结果为:11 print("{0:x}".format(15)) # 转成十六进制,结果为:f print("{0:,}".format(99812939393931)) # 千分位格式化,结果为:99,812,939,393,931

2.3—— f:python3.5以后才推出

>>> 
>>> x = input("your name: ")
your name: CC
>>> y = input("your age: ")
your age: 18
>>> res = f"我的名字是{x} 我的年龄是{y}"
>>> print(res)
我的名字是CC 我的年龄是18
>>> 

 

二、运算符

1、算数运算符

>>> print(10 + 3.1)
13.1
>>> print(10 + 3)
13
>>> print(10 / 3)  # 结果带小数
3.3333333333333335
>>> 
>>> print(10 // 3)  # 只保留整数部分
3
>>> print(10 % 3) # 取模、取余数
1
>>> print(10 ** 3) # 10的三次方
1000
>>> 

2、比较运算符: >、>=、<、<=、==、!=

>>> 
>>> print(10 > 3)
True
>>> print(10 == 10)
True
>>> 
>>> print(10 >= 10)
True
>>> print(10 >= 3)
True
>>> 
>>> 
>>> name=input("your name: ")
your name: cc
>>> print(name == "egon")
False
>>> 

 

3、赋值运算符

# 3.1 =:变量的赋值
# 3.2 增量赋值:

>>> 
>>> egonAge=18
>>> egonAge+=3
>>> print(egonAge)
21
>>> 

#3.3 链式赋值

# x=10
# y=x
# z=y
# z = y = x = 10 # 链式赋值
# print(x, y, z)
# print(id(x), id(y), id(z))

 

# 3.4 交叉赋值

m=10
n=20
# print(m,n)
# 交换值
# temp=m
# m=n
# n=temp
# print(m,n)

# m,n=n,m # 交叉赋值
# print(m,n)

 

# 3.5 解压赋值

salaries=[111,222,333,444,555]
# 把五个月的工资取出来分别赋值给不同的变量名

# mon0=salaries[0]
# mon1=salaries[1]
# mon2=salaries[2]
# mon3=salaries[3]
# mon4=salaries[4]

 

# 解压赋值

# mon0,mon1,mon2,mon3,mon4=salaries
# print(mon0)
# print(mon1)
# print(mon2)
# print(mon3)
# print(mon4)

# 引入*,可以帮助我们取两头的值,无法取中间的值
# 取前三个值

# x,y,z,*_=salaries=[111,222,333,444,555] # *会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为_
# print(x,y,z)
# print(_)

# 取后三个值

# *_,x,y,z=salaries=[111,222,333,444,555]
# print(x,y,z)

# x,*_,y,z=salaries=[111,222,333,444,555]
# print(x,y,z)

# salaries=[111,222,333,444,555]
# _,*middle,_=salaries
# print(middle)

# 解压字典默认解压出来的是字典的key

x,y,z=dic={"a":1,"b":2,"c":3}
print(x,y,z)