【一】用户交互
- 交互的本质就是输入、输出
- 用户交互就是人往计算机中input/输入数据,计算机print/输出结果
【二】为什么要与用户交互
- 为了让计算机能够像人一样与用户沟通交流
【三】如何实现交互
【1】输入(input)
- input接受的所有数据类型都是
str
类型
username = input("请输入你的用户名:>>>")
password = input('请输入你的密码:>>>')
print(username, type(username)) # input接受的所有数据类型都是str类型
print(password, type(password)) # input接受的所有数据类型都是str类型
# input 语法
# (1)弹出输入框
# input()
# (2)提示信息
# print("请输入用户名")
# input()
# (3)提示输入信息并且获取到输入的信息
# 提示输入框
# username = input("请输入用户名 :>>>> ")
# # 用变量接收到输入的内容
# print(username)
# (4)输入的内容永远是字符串
# username = input("请输入用户名 :>>>> ")
# 用变量接收到输入的内容
# print(username, type(username))
# 1 <class 'str'>
# True <class 'str'>
# (5)数据之间进行运算需要转换数据类型
# num_1 = input("请输入数字1 :>>> ")
# num_2 = input("请输入数字2 :>>> ")
# result = num_1 + num_2
# 强制数据类型转换 ---> 将符合当前数据类型的格式的数据转换为指定的数据类型
# 1 = int("1")
# int("a")
# result = int(num_1) + int(num_2)
# print(result,type(result))
【2】输出(print)
print
函数用于向控制台输出信息。你可以使用print
函数来显示程序的运行结果、提示信息等。
# 直接打印变量或者字符串或者其他
# print("Hello World!")
name = "dream"
age = 18
# print(f"my name is {name},my age is {age}")
# print 语句允许存放多个变量名及变量值,但是每一个元素之间要用逗号 隔开
print(f"my name is", name, "my age is", age)
# print 可以修改默认的尾椎
# 默认自带一个结束符,换行符,我们可以通过 end 参数修改默认的结束符
print(name, end='*')
print(age, end='&')
【四】运算符
【1】算数运算符
【1】加法运算符 +
x = 9
y = 2
result = x + y
print(result) # 输出:11
【2】减法运算符 -
x = 9
y = 2
result = x - y
print(result) # 输出:7
【3】乘法运算符 *
x = 9
y = 2
result = x * y
print(result) # 输出:18
【4】除法运算符 /
x = 9
y = 2
result = x / y
print(result) # 输出:4.5
【5】取整除运算符 //
x = 9
y = 2
result = x // y
print(result) # 输出:4
【6】求余数运算符 %
x = 9
y = 2
result = x % y
print(result) # 输出:1
【7】幂运算符 **
x = 9
y = 2
result = x ** y
print(result) # 输出:81
【2】比较运算符
【1】相等运算符 ==
x = 9
y = 2
result = x == y
print(result) # 输出:False
【2】不等运算符 !=
x = 9
y = 2
result = x != y
print(result) # 输出:True
【3】大于运算符 >
x = 9
y = 2
result = x > y
print(result) # 输出:True
【4】小于运算符 <
x = 9
y = 2
result = x < y
print(result) # 输出:False
【5】大于等于运算符 >=
x = 9
y = 2
result = x >= y
print(result) # 输出:True
【6】小于等于运算符 <=
x = 9
y = 2
result = x <= y
print(result) # 输出:False
【3】赋值运算符
- python语法中除了有=号这种简单的赋值运算外
- 还支持增量赋值、链式赋值、交叉赋值、解压赋值
- 这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简。
- 我们以x=9,y=2为例先来介绍一下增量赋值
# = += -= *= /= %= //= **=
# += 增量赋值
增量赋值运算符用于将变量与右侧的表达式相结合,并将结果赋值给变量
num_one = 2
num_one += 1 # num_one = num_one + 1
print(num_one)
num_two = num_one + 1
num_two += num_one
print(num_two)
# 链式赋值
链式赋值允许在单一语句中给多个变量赋值。这样可以减少代码行数,提高代码的紧凑性。
a = b = c = 6
print(a, b, c)
# 交叉赋值
交叉赋值允许在不使用临时变量的情况下,交换两个变量的值。
x = 8
y = 9
x, y = y, x
print(x, y)
# 解压赋值
解压赋值允许将一个可迭代对象(如列表、元组等)的值解压到多个变量中,以便进一步使用。
a, b = (1, 2)
print(a, b)
# 位置变量名少了不行
# a, b = (1, 2, 3)
# 位置变量名多了不行
# a, b, c, d = (1, 2, 3)
# 使用下划线代替多余的元素
_, b, _ = (1, 2, 3)
print(b)
【五】逻辑运算符
- 逻辑运算符用于连接多个条件,进行关联判断,并返回布尔值
True
或False
。 - 常用的逻辑运算符包括与(
and
)、或(or
)、非(not
)。
【1】与运算符 (and
)
- 与运算符
and
在两个条件都为True
时,返回True
;如果其中一个条件为False
,则返回False
。
x = 5
y = 10
result = (x > 0) and (y > 0)
print(result) # 输出:True
- 在上述例子中,
(x > 0) and (y > 0)
表示同时判断x > 0
和y > 0
是否都为True
,因为两个条件都满足,所以结果为True
。
【2】或运算符 (or
)
- 或运算符
or
在两个条件中至少有一个为True
时,返回True
;如果两个条件都为False
,则返回False
。
x = -5
y = 10
result = (x > 0) or (y > 0)
print(result) # 输出:True
- 在上述例子中,
(x > 0) or (y > 0)
表示判断x > 0
或者y > 0
至少有一个条件为True
,因为y > 0
为True
,所以结果为True
。
【3】非运算符 (not
)
- 非运算符
not
用于对一个条件取反,如果条件为True
,则返回False
;如果条件为False
,则返回True
。
x = 5
result = not (x > 0)
print(result) # 输出:False
- 在上述例子中,
not (x > 0)
表示对条件x > 0
取反,因为x > 0
为True
,所以结果为False
。
【4】连续问题
[1]连续多个 and
- 在连续多个
and
运算中,如果其中一个条件为False
,则整个表达式的结果为False
,即使后面的条件都为True
。
[2]连续多个 or
在连续多个 or
运算中,如果其中一个条件为 True
,则整个表达式的结果为 True
,即使后面的条件都为 False
。
【3】优先级 not>and>or
print(3 > 4 and 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3)
# False and True or Flase and True or Flase
# false or false or flase
# false
# 我们自己写逻辑运算的时候建议 用 () 声明优先级
print(10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4)
# 10 and 0 or false and false or "abc" or false adn 333 or true
# false or flase or "abc" or false or true
# false or "abc" or false or true
# "abc" or false or true
# "abc" or true
# "abc"
print("abc")
【六】成员运算符
【1】in
运算符
fruits = ["apple", "banana", "cherry"]
print("banana" in fruits) # True
print("orange" in fruits) # False
【2】not in
运算符
fruits = ["apple", "banana", "cherry"]
print("banana" not in fruits) # False
print("orange" not in fruits) # True
【七】身份运算符
- 身份运算符用于比较对象的内存地址,即判断两个对象是否指向同一块内存地址。
【1】is
运算符
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b) # True
print(a is c) # False 因为a 和 c 是两个独立的内存空间,所以 a 不是 c
【2】is not
运算符
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is not b) # False
print(a is not c) # True
- 这两个运算符主要用于检查对象的标识,即它们是否指向相同的内存地址。
# 【补充】 == 和 is 的区别
# 比较运算符,比较的值先相等
# == 比较的是 值是否相等
# is 比较的是 内存空间地址
==
双等号比较的是value是否相等is
用于比较两个对象的标识id(内存地址)是否相同- 在实际应用中,特别是对于可变对象,
==
通常更适合用于比较值,而is
更适合用于比较对象的身份。 - id相同,内存地址必定相同,意味着type和value必定相同
- value相同type肯定相同,但id可能不同
【八】流程控制(if-elif-else)
- 程序是由语句构成,而流程控制语句 是用来控制程序中每条语句执行顺序的语句。
- 可以通过控制语句实现更丰富的逻辑以及更强大的功能。
- 几乎所有编程语言都有流程控制语句,功能也都基本相似。
- 其流程控制方式有
- 顺序结构
- 分支结构
- 循环结构
- 这里最简单最常用的就是顺序结构,即语句从上至下一一执行。
【1】顺序结构
- 顺序结构用于按照既定的顺序执行一系列的操作,这是程序执行的最基本模式。
- 通过良好的顺序结构,可以清晰地表达程序的逻辑流程,使代码易读易懂。
- 这有助于开发者理解和维护代码,也方便调试。
【2】单分支结构(if)
- 单分支结构指的是程序根据条件的成立与否,执行两个分支中的其中一个。
- 常见的单分支结构语法是
if
语句。
【1】单分支结构
# if 条件:
# 四个空格 代码
# score = 89
# if score > 90:
# # 这里面的代码我们称之为代码体/代码块
# print(f"当前成绩为 {score} , 评级为优秀!")
# print(f"111")
# 单分支结构会依次向下执行代码# 并且在遇到条件时进行判断,如果条件为真则执行当前代码提
# 【2】双分支条件
# if 条件:
# 四个空格 代码体
# else:
# 四个空格 代码体
# score = 89
# if score >= 90:
# print(f" {score} 优秀")
# else:
# print("不优秀")
# print(11)
# 双分支条件:有一个条件做约束,如果当前条件不符合,则会进入到另一个条件的代码体中
# 【3】多分支
# 90 80 70 70以下
# 优秀 良好 及格 不及格
# if 条件:
# 四个空格 代码体
# elif 条件:
# 四个空格 代码体
# elif 条件:
# 四个空格 代码体
# elif 条件:
# 四个空格 代码体
# else:
# 四个空格 代码体
score = 69
if score >= 90:
print(f"{score} :>>>> 优秀")
elif score >= 80:
print(f"{score} :>>>> 良好")
elif score >= 70:
print(f"{score} :>>>> 及格")
else:
if score >= 60:
print(f"差及格还有一丢丢")
else:
print(f"{score} :>>>> 不及格")
【3】循环结构(while)
# 循环结构
# 一个条件不符合我当前状态的时候我可能还会二次判断
# 密码尝试上 可以进行多次密码的尝试
# while 条件(循环截止的条件):
# 代码体
# 达到某个条件的时候想结束当前循环
# continue
# 结束整个循环
# break
# while True:
# score = int(input("请输入成绩:》》》》"))
# if score >= 90:
# print(f"优秀")
# else:
# print(f"不及格")
count = 0
while count <=9:
count += 1
if count == 1:
print("这是 1 ")
elif count == 3:
print("这是 3 ")
# 结束本次循环
continue # 走到continue 以后就不会继续乡下执行代码,而是回到了 while 条件重新进入当前循环
elif count == 5:
print(f"这是 :>>> {count}")
break # 类似于程序出现错误直接将当前程序打断
print(count)
# 做登录的三次尝试
user = {"username": "song","password":"123"}
username = user["username"]
password = user["password"]
count = 0
while count < 3:
username_input = input("输入用户名:")
password_input = input("输入密码: ")
if username_input == username and password_input == password:
print("登录成功")
break
else:
count = count + 1
print("登录错误 你还剩下次机会",(3 - count),"次机会")
print(count)
练习题
# 练习题:
# 前提:创建一个字典存了用户的用户名和密码
# 有一个输入框输入用户名和密码
# 有了用户名以后去去字典中查密码
# 有了用户名但是字典中不存在的情况,打印当前用户名不存在
# 将字典中的密码和输入的密码进行比对
# 一致打印登陆成功
# 否则提示登录失败
user = {"username": "song","password":"123"}
username = user["username"]
password = user["password"]
count = 0
while count < 3:
username_input = input("输入用户名:")
password_input = input("输入密码: ")
if username_input == username and password_input == password:
print("登录成功")
break
else:
count = count + 1
print("登录错误 你还剩下次机会",(3 - count),"次机会")
print(count)
# 【1】定义一个字典 ---> 又保存了我们的正确的登录信息
# {'dream':"521","hope":"369"} ---> 字典取值 --- get()
# {"dream":["dream","521"]} ---> 把列表取出来 --> 在进行解压赋值
# 【2】两个输入框 ---> 输入用户名和密码
# 字符串 ---> 字典中的键 ---> 直接根据键取值 ---> 成员运算
# 【3】多用户登录
# 【3.1】有一个信息字典
# 先判断有没有键 ---
# 没有键
# 去字典中取出密码
if not 'dream' in user_dict:
print(f"登录失败")
pwd = user_dict.get('key')
# 模拟登录
标签:username,True,程序,用户,运算符,result,print,input,交互
From: https://www.cnblogs.com/song1002/p/18107363