用户交互与运算符
今日内容总结
与用户交互
"""
以前银行取钱只能拿着存折去柜台跟小姐姐交流才可以
你想干嘛 我想取钱
请输入密码 滴滴滴密码
想取多少钱 我想取一个亿
...
随后程序代替了小姐姐跟我们交互
ATM机器
1.获取用户输入
获取用户输入
input
username = input('请输入您的用户名>>>:')
"""
1.先执行input获取用户输入
2.将输入的数据绑定给变量名username
3.以后在程序中就可以使用变量名反复调用用户数据
"""
强调:input获取到的数据都会统一处理成字符串类型
2.输出内部信息
输出内部信息
print
1.括号内既可以放数据值也可以放变量名 并且支持多个 逗号隔开即可
2.print自带换行符
换行符:\r\n \n(斜杠与字母组合到一起可能会产生特殊的含义)
3.print也可以切换结束符
print(数据,end='默认是\n')
扩展:python2与python3中两个关键字的区别
python2中
input方法需要用户自己提前指定数据类型 写什么类型就是什么类型
raw_input方法与python3中input一致 输入的统一处理成字符串
python2中
print方法有两种使用方式
print 数据值
print(数据值)
格式化输出
提前定义好一些内容 将来需要使用的时候可以局部修改
eg:奖状、录取通知书、合同
代码实现
在现实生活中大部分情况下使用下划线提示别人填写内容
但是在程序中需要使用占位符:%s %d
info = '%s同志你好'
'''单个占位符'''
print(info % 'Jason') # Jason同志你好
print('%s同志你好' % 'Tony') # Tony同志你好
print(info % ('jason',))
print('%s同志你好' % ('Tony',))
'''多个占位符'''
desc = '姓名:%s 年龄:%s 爱好:%s'
print(desc % ('jason', 18, 'read')) # 姓名:jason 年龄:18 爱好:读书
print('姓名:%s 年龄:%s 爱好:%s' % ('tony', 28, 'rap')) # 姓名:tony 年龄:28 爱好:rap
'''注意事项:有几个占位符就需要几个数据值'''
print('my name is %s my age is %s' % ('jason',)) # 少了不行 会报错
print('my name is %s my age is %s' % ('jason', 18, 'read')) # 多了也不行 也会报错
'''不同占位符的区别'''
demo1 = '%s您好 您本月的话费是%s 余额是%s' # %s常见数据类型都支持
print(demo1 % ('jason', 100, 10000000000000)) # jason您好 您本月的话费是100 余额是10000000000000
demo2 = '%d您好 您本月的话费是%d 余额是%d' # %d只支持数字类型
print(demo2 % ('tony', 1000000000, -100000)) # 运行会因为tony不是数字类型而出错
print('%08d'% 123) # 00000123
print('%08d'% 1234324324) # 1234324324
运算符
基本运算符
1.数学运算符
+ - * / %(取余) //(取整) **(次方)
简化写法
n = 10
n += 1 # n = n + 1
n -= 1 # n = n - 1
n *= 1 # n = n * 1
n /= 1 # n = n / 1
n %= 1 # n = n % 1
n //= 1 # n = n // 1
n **= 1 # n = n ** 1
2.比较运算符
< > <= >= ==(等于号) !=(不等于)
常用赋值符
1.链式赋值
name = 'jason'
name1 = name
name2 = name
链式赋值
name = name1 = name2 = 'jason'
2.交叉赋值
m = 100
n = 999
'''让m和n互相转换绑定的值'''
"""错误示写法"""
m = n
n = m
print(m, n) # 999 999
'''方式1:采用中间变量'''
temp = m
m = n
n = temp
print(m, n) # 999 100 这种方法不是最好的
'''方式2:交叉赋值语法'''
m, n = n, m
print(m, n) # 999 100 简化最好用这种
3.解压赋值
name_list = ['jason', 'kevin', 'tony', 'oscar']
'''low的写法'''
name1 = name_list[0]
name2 = name_list[1]
name3 = name_list[2]
name4 = name_list[3]
'''解压赋值语法'''
name1, name2, name3, name4 = name_list
'''解压赋值在使用的时候 正常情况下需要保证左边的变量名与右边的数据值个数一致'''
a, b = name_list # 变量名少了不行 运行会报错
a, b, c, d, e = name_list # 变量名多了也不行 运行也会报错
'''当需要解压的数据个数特别多 并且我们只需要使用其中的几个 那么可以打破上述的规则'''
a, *b = name_list # *会自动接收多余的数据 组织成列表赋值给后面的变量名
print(a) # jason
print(b) # ['kevin', 'tony', 'oscar']
a, c, *b = name_list
print(a) # jason
print(c) # kevin
print(b) # ['tony', 'oscar']
a, *b, c = name_list
print(a) # jason
print(b) # ['kevin', 'tony']
print(c) # oscar
'''当数据值不准备使用的时候 可以使用下划线作为变量名绑定'''
a, *_, c = name_list
逻辑运算符
'''主要配合条件一起使用'''
and 与
and连接的多个条件必须全部成立 结果才成立
eg:
你去相亲提要求:身高必须是160以上、长相必须好看、家里必须有钱、性格必须温柔 身高 and 长相 and 有钱 and 温柔
1 > 2 and 4 < 8 and 10 < 1 and 1 == 2
如果条件中全部由and组成那么判断起来非常的简单 只要发现一个不成立 结果就不成立
print(1 < 10 and 666) # 666 成立
print(1 < 10 and 2 < 8) # True 成立
print(111 and 222) # 222 成立
如果需要你准确的说出具体的结果值 那么需要按照下列方式
如果and左边的条件是成立的 那么就完全取决于右边的条件
右边如果直接是数据值 那么结果就是该数据值 如果是含有表达式 则为布尔值
or 或
or连接的多个条件只要有一个成立 结果就成立
eg:
你去相亲提要求:要么家里有钱 或者家里有势 或者长得完美 或者对你死心塌地 有钱 or 有势 or 好看 or 专一
1 > 2 or 4 < 8 or 10 < 1 or 1 == 2
如果条件中全部由or组成那么判断起来非常的简单 只要发现一个成立 结果就成立
print(1 < 10 or 666) # True
print(666 or 1 > 10) # 666
print(0 or False) # False
print(0 or 111) # 111
规律用and
not 非
取反
类似于说反话
"""
三者混合使用的时候有优先级之分 但是我们不需要记忆优先级 应该通过代码的形式提前规定好优先级
eg: 先乘除有加减 但是可以使用括号来改变优先级
(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
"""
成员运算符
判断个体在不在群体内
name_list = ['jason', 'kevin', 'oscar', 'jerry']
print('tony' in name_list) # False
print('tony' not in name_list) # True
print('j' in name_list) # False 列表最小单位是数据值 不能再细分
s1 = 'hello world'
print('d' in s1) # 字符串最小单位是单个单个的字符
d1 = {
'username': 'jason',
'pwd': 123
}
print('jason' in d1) # False 字典成员运算只有键参与
print('username' in d1) # True 'username' 'pwd'
身份运算符
"""
id() 返回一串数字 该数字可以看成是内存地址
"""
is 判断内存地址是否相同
== 判断数据值是否相同
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
l2 = [11, 22, 33, 44, 55, 66, 77, 88]
print(l1 == l2) # True
print(id(l1))
print(id(l2))
print(l1 is l2) # False
小整数池
i1 = 11
i2 = 11
print(i1 is i2) # true
s1 = 'jason jason jason'
s2 = 'jason jason jason'
print(s1 is s2) # true
不同的环境下可能优化的程度不一样
"""
了解
值相同 内存地址可能不同
内存地址相同 值肯定相同
"""
作业
获取用户输入并打印成下列格式
------------ info of Jason -----------
Name : Jason
Age : 18
Sex : male
Job : Teacher
---------------- end -----------------
程序编写:
username = input('Name:')
age = input('Age:')
sex = input('Sex:')
job = input('Job:')
info = '''------------ info of %s -----------
Name : %s
Age : %s
Sex : %s
Job : %s
---------------- end -----------------'''
print(info % (username, username, age, sex, job))
说出下列变量名v绑定的结果
v1 = 1 or 3 # 绑定1 1成立 而or只要一个成立后 后面都不用看了
v2 = 1 and 3 # 绑定3 1成立然后因为是and得看后面否也成立 3也成立然后直接赋值
v3 = 0 and 2 and 1 # 绑定0 0不成立 后面都是and 开始就没成立 不用往后看了直接赋值0
v4 = 0 and 2 or 1 # 绑定1 0不成立 2就不用管成不成立 跳过直接看or右边的 1成立直接赋值
v5 = 0 and 2 or 1 or 4 # 绑定1 同上所述 因为or 1只要成立 4就不用看了 直接赋值1
v6 = 0 or False and 1 # 绑定False 0不成立 因为是or 往后看False也不成立 后面是and没成立不用往后看了直接赋值False
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性