四、元组(跟着孙兴华老师学Python)

本文介绍了Python中元组的用法、构成以及常见操作。元组是不可变的数据结构,可用于存储多个不同类型的数据。文章详细讲解了元组的查询、修改(通过切片和重新赋值)以及异常处理,并提供了实际的代码示例。同时,文章还讨论了如何在遇到异常时使用try-except进行处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、元组的用法及构成:

为什么要使用元组?因为一个元组可以存储多个数据,且里面的数据不能被修改。
元组长什么样子?元组使用小括号包裹,使用逗号隔开每个数据,数据可以是不同的类型。

变量名 = (‘孙悟空’,‘猪八戒’,‘沙和尚’) # 多个数据
变量名 = (‘孙悟空’,) # 单个数据
变量名 = (520) # 这是一个整型
变量名 = (‘孙悟空’) # 这是一个字符型
变量名 = ( ) # 定义一个空元组

二、元组的常见操作 查询

元组的常见操作,因为他不可以被修改,所以他的操作方法就只有查询了!

代码:

变量名 = ('孙悟空','猪八戒','沙和尚','白龙马','孙悟空')
print(变量名
看b站上,孙兴华up主课程的笔记,python基础入门p1。 个人感觉,更容易接受理解。up主的uid:437239552 这行下面所有内容可直接复制到pycharm里运行 #python基础入门第一节课,孙兴华入门p1 import os print("SZD") print("你好世界",end="\t") # \t是tab空个格 print("加油~你可以的!") print("你好","中国") print("你好","EXO",sep="...") # sep不的话 “你好”和”EXO“中间默认是空格隔开,加了sep="..."就用...隔开 print("你好,未来"*3) # *3代表重复3次 print("1007"+"0412") # +代表连接,这里因为有""+""所以10070412是字符串 print(1007+412) print("I 'love' U") #里头想输出单引号,外面用双引号。里头想输出双引号,外面用单引号 print(r"C:\abc\de\npg.xls") # 由于\与其他字母会组合成回车等,会报错,所以前面加个r ''' 多行注释,使用前面三个单引号,后面三个单引号 1 2 好的,就是这样 ''' # 变量 用=赋值 a = 5 b = 2 c = a print(b,c) x,y,z = 7,3,0 print(x,y,z) m=n=l=2 print(m,n,l) x = 5 y = 2 x,y = y,x #把x值给y,y的值给x print(x) print(y) 姓名 = '爱丽' 年龄 = 23 #数值不用引号 print(f'我的名字叫{姓名},今年的年龄是{年龄}岁') #语法是 f'{表达式}' print(f'我的名字叫{姓名},明年的年龄是{年龄+1}岁') ''' 姓名 = input("请输入你的姓名:") # 所有input输入完都是 字符串 年龄 = int(input("请输入你的年龄:")) #没有 int 的话,第二个print里年龄+1会报错,说不是int型 print(f"你的姓名是{姓名},你今年的年龄是{年龄}岁") print(f"你的姓名是{姓名},你明年的年龄是{年龄+1}岁") ''' # int()转整型,float()转浮点型,str()转字符型,用type()检查数据类型 print("1"+"2") # 这里只是两个字符串的连接,不能进行运算 print(int("1")+int("2")) # 这样就可以相加了 print(type("1")) # 字符型 print(type(123)) # int型 print(type(2.5)) # 浮点型 #数运算符 a = int("5") b = int("2") print(a+b) # 7 print(a-b) # 3 print(a*b) # 10 print(a/b) # 2.5 浮点型 c = 4 d = 2 print(c/d) # 2.0 由于是 / 所以即使整除也带小数点后一位 print(a//b) # 2 整除 print(a%b) # 取余,5÷2=2余1,所以打印出 1 print(a**b) # 指数 5*5 print((a+b)*b) # 带()先运算,7*2=14 # 优先级:() 高于 ** 高于 *、/、//、% 高于 +、— #符合运算符 a = 2 b = 6 c = 5 a -= 1 # a = a-1 b += 1 # b = b+1 c += 1+2 # c += (1+2),c = c+3 print(a,b,c) #比较运算符(关系运算符) 返回值是逻辑值 True 或 False a = 3 b = 3 print(a==b) # a等于b, 返回True,否则返回False print(a!=b) # a不等于b,显然是False c = 5 d = 6 print(c>d) # c大于d, 所以是False print(c>=d) # c大于等于d,False # True也可以用 1 来表示,False也可以用 0 表示 #逻辑运算 and or not ''' x and y x 与 y,如果x为False,x and y 返回False,否则返回y的值。如:True and False 返回False (只要有假怎样都返回False,除非都是真) x or y x 或 y,如果x是True, x or y 返回True, 否则返回y的值。如:False or True 返回True (只要有真怎样都返回True,除非都是假) not x 非, 如果x为True,返回False。如果x为False,返回True ''' x = True y = True print(x and y) # 返回True z = False w = False print(w or z) # 返回False print(not x) # x为真,由于not x,所以返回False print(0 and 4) # 返回0,因为0代表False,and只要有 假 就返回假 print(3 and 4) # 返回4,and里只要有 0 ,就返回假,否则返回 最后一个 非0 的数 print(4 and 3) # 返回3,返回 最有一个 非0 的数 print(0 or 4) # 返回4,or里有真,就返回真,返回 第一个 非0 的数 print(3 or 4) # 返回3 print(4 or 3) # 返回4 print(0 or 0) # 返回0,只有都是0时,才返回0 #优先级顺序 ''' 从上到下级别越来越低 小括号 () 幂运算 ** 正负号 +- 算术运算 *,/,//,%,+,- 先乘除后加减 比较运算 <,<=,>,>=,==,!= 逻辑运算 not,and,or 先not 后and 最后or '''
<think>好的,我现在需要帮助用户解决在Python中使用元组进行习通验证的问题。首先,用户提到的“习通验证”可能是指某种身份验证或数据验证,但具体细节不明确。因此,我需要先明确用户的需求。习通可能是一个教育平台,验证可能涉及用户凭证、课程信息等数据的验证。 接下来,考虑到元组Python中的不可变性,用户可能想利用元组来存储不可变的验证信息,比如用户名、密码哈希、权限等。这样可以确保这些数据在传输或存储过程中不被意外修改,提高安全性。 根据提供的引用资料,引用[3]提到元组是不可变的,但可以通过拼接等方式创建新元组。引用[2]和[1]也说明,虽然元组本身不可变,但可以通过转换为列表,添加元素后再转回元组来实现“添加”效果。这可能对用户有用,比如在验证过程中需要动态添加新的验证参数。 然后,我需要设计一个示例,展示如何用元组存储验证信息,并进行验证。例如,用户登录时,系统可能检查用户名和密码是否匹配预存的元组数据。同时,可能需要处理多个用户的情况,每个用户的验证信息作为一个元组,存储在列表中。 另外,引用[5]提到元组元素的不可变性,确保数据安全,这可能适用于存储敏感信息如密码哈希。但实际应用中,密码不应明文存储,而是使用哈希值,这一点需要在示例中体现。 可能的实现步骤包括: 1. 创建用户凭证的元组,包含用户名和密码哈希。 2. 验证用户输入时,将输入的密码哈希与存储的哈希对比。 3. 使用元组列表来管理多个用户。 4. 展示如何“添加”用户(通过创建新元组并合并到列表)。 需要注意的是,虽然元组本身不可变,但每次添加新用户实际上是生成新元组,替换旧的列表。这符合引用[2]中提到的方法,即通过拼接创建新元组。 最后,需要确保代码示例符合Python语法,并解释每一步的作用,帮助用户理解如何应用元组进行验证。同时,生成相关问题,引导用户进一步习,比如处理密码安全、优化验证逻辑等。</think>### Python元组习通验证中的实现方式 #### 1. 元组特性与验证场景 元组的**不可变性**特别适合存储需要防篡改的验证参数,例如: - 用户权限配置:$(\text{"生"}, \text{"课程访问权限"}, 2023)$ - 系统配置参数:$(60, \text{"秒"}, \text{"超时设置"})$ - 身份凭证组合:$(\text{userID}, \text{hash_password}, \text{权限等级})$ #### 2. 基础验证实现 ```python # 已注册用户信息元组 registered_users = ( ("2019001", "5f4dcc3b5aa765d61d8327deb882cf99"), # password哈希 ("2023005", "482c811da5d5b4bc6d497ffa98491e38") ) def verify_user(user_tuple): input_pwd = hashlib.md5(user_tuple[1].encode()).hexdigest() return any(u[0] == user_tuple[0] and u[1] == input_pwd for u in registered_users) # 测试验证 test_user = ("2019001", "password") print(verify_user(test_user)) # 输出:True ``` *说明:使用MD5哈希进行密码验证(实际应使用更安全的bcrypt)[^5]* #### 3. 动态扩展验证参数 当需要添加新用户时: ```python new_user = ("2023100", hashlib.md5("newpass123".encode()).hexdigest()) updated_users = registered_users + (new_user,) # 注意逗号构成一元组 print(updated_users[-1][0]) # 输出:2023100 ``` *通过元组拼接实现"添加"操作[^2]* #### 4. 多条件验证结构 $$ \text{验证规则} = (\text{权限阈值}, \text{有效期}, \text{设备白名单}) $$ ```python security_rules = ( (2, "2023-12-31", ("PC", "Mobile")), (3, "2024-06-30", ("PC",)) ) def check_access(user_level, device): current_rule = security_rules[0] return (user_level >= current_rule[0]) and (device in current_rule[2]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值