python---随机数,异常,日志,推导

本文探讨了Python中异常处理的多种方式,包括基本的异常捕获、自定义异常类及异常嵌套,并展示了如何使用日志记录程序的重要消息。此外,还介绍了Python中生成随机数的不同方法。

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

# 异常
a, b = 1, 0
# 多路捕获
# 子类在前 父类在后 防止未知异常影响程序运行
try:
    print(a/b)
except (ZeroDivisionError, TypeError):
    print("除数不能为0或类型不对")
print("----程序结束----")

#  捕获异常
# 定义一个调用的方法:捕获异常
# 异常可以嵌套
# 自定义异常类:一般继承Exception
class sexExcption(Exception):
    pass
try:
    sex = input("请输入性别:")
    if sex != "男" and sex != "女":
        raise sexExcption("性别只能是男或女")
except sexExcption as ex:
    print(ex)
finally:
    print("程序结束")



# 日志的相关概念  用来记录程序中 重要的消息
# 日志对象 属性
# 错误级别

import logging
log_format = '%(asctime)s %(levelname)s %(message)s'
DATE_FORMAT = "%Y-%m-%d"
logging.basicConfig(level=logging.DEBUG,
                    filename='my.log',
                    format=log_format,
                    datefmt=DATE_FORMAT)
logging.debug("this is a debug")
logging.info("this is a info")
logging.warning("this is a warning")
logging.error("this is a error")
logging.critical("this is a critical")



# 随机数
import random
form .Pers
print(random.choice(range(1, 33)))
# random.choice(range(1,34))随机取1-33之间的1个随机数,可能重复
print(random.choices(range(1, 34), k=6))
# random.choices(range(1,34),k=6,weight=range(1,34))方法,可以产生6个,但有可能重复
print(random.sample(range(1, 35), k=6))
# 常用:random.sample(range(1,34),6)随机取6个,不重复,得到一个列表,但是没有排序





# 推导
# 整除3的数字列表
lists = []
for i in range(100):
    if i % 3 == 0:
        lists.append(i)
print(lists)

# 推导实现
# for循环
nums = [x for x in range(100) if x % 3 == 0]
print(nums)

# 利用函数推导
def nums(x):
    return x*x
nums1 = [nums(x) for x in range(100) if x % 3 == 0]
print(nums1)

# 快速更换key和value,元组推导式
mcase = {'a': 10, 'b': 34}
new_m = {}
for k, v in mcase.items():
    new_m[v] = k
new_m = {k: v for k, v in mcase.items()}
print(new_m)

#
set1 = {x**2 for x in [1, 2, 3, 4, 5]}
print(set1)

# 用集合推导 字符串长度的集合
strings = ['a', 'is', 'with', 'if', 'file', 'exception']
lens = [s.upper() for s in strings if len(s) > 4]
print(lens)

# 0到9 的次方
print([i**2 for i in range(10)])

# (x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元组列表
nums2 = [(x, y) for x in range(6) if x % 2 == 0 for y in range(6) if y % 2 != 0]
print(nums2)

# 求m,中3,6,9组成的列表
m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print([x[2] for x in m])

# 求m,中1,5,9组成的列表
print([m[x][x] for x in range(len(m))])

# 求m,中3,5,7组成的列表
print([m[x][len(m)-1-x] for x in range(len(m))])

<think>我们有两个任务: 1. 用户当前的问题:如何将Python生成随机数转换为字符串(文本类型) 2. 根据引用内容,我们注意到引用[2]提到了随机数的使用,引用[3]提到了将随机数列表变成字符串,但具体内容不完整。 然而,用户的问题很明确:将随机数转换为字符串。这是一个基本的数据类型转换问题。 在Python中,我们可以使用内置函数`str()`将数字(包括整数、浮点数)转换为字符串。 同时,用户提到“随机数”,我们可以使用`random`模块生成随机数,然后转换为字符串。 步骤: 1. 导入random模块 2. 生成随机数(整数或浮点数) 3. 使用str()函数转换 示例代码: 生成随机整数并转换: import random num = random.randint(1,100) # 生成1到100之间的随机整数 str_num = str(num) 生成随机浮点数并转换: num = random.random() # 生成0到1之间的随机浮点数 str_num = str(num) 另外,如果用户有一个随机数列表,想将整个列表转换为字符串,可以使用列表推导式将每个元素转换为字符串,然后使用join方法连接成字符串(如果需要)或者直接使用str()将整个列表转换为字符串(但这样会保留方括号和逗号)。 例如,将随机整数列表转换为字符串列表,再连接成一个字符串: num_list = [random.randint(1,100) for _ in range(5)] # 方法1:每个元素转字符串,然后组合成列表 str_list = [str(x) for x in num_list] # 方法2:将整个列表转换为字符串(得到类似"[1,2,3]"的字符串) str_list2 = str(num_list) # 方法3:将列表中的每个元素转换为字符串并用逗号连接(不包含方括号) str_joined = ','.join(str(x) for x in num_list) 根据用户的问题,他可能只需要单个随机数的转换,但为了全面性,我们也提供列表的情况。 注意:用户引用的内容中,引用[2]提到了随机数,引用[3]提到了从列表将RLE转换为字符串,但具体内容不完整,我们无法直接使用。因此,我们直接根据问题回答。 回答结构: 1. 直接回答问题:使用str()函数 2. 提供示例代码(单个随机数转换) 3. 扩展:随机数列表的转换(因为引用[3]提到了列表) 另外,引用[1]和[2]的内容与当前问题关系不大,但引用[2]中提到了随机数,所以我们只参考这一点。 由于用户要求将随机数转换为字符串,我们不需要考虑引用[1]和[3]中不相关的内容。 最后,按照要求生成相关问题。 注意:我们不需要在回答中显式写出引用标记,因为用户提供的引用内容与当前问题关联性不强,但我们可以标注引用[2]作为随机数生成的参考。 回答:</think>### Python随机数转换为字符串的方法 在Python中,将随机数转换为字符串(文本类型)主要有以下几种方法: #### 1. 使用`str()`函数(最常用) ```python import random # 生成随机整数 random_int = random.randint(1, 100) str_int = str(random_int) # 转换为字符串 print(f"整数转字符串: {str_int} | 类型: {type(str_int)}") # 生成随机浮点数 random_float = random.uniform(1.0, 10.0) str_float = str(random_float) # 转换为字符串 print(f"浮点数转字符串: {str_float} | 类型: {type(str_float)}") ``` #### 2. 使用格式化字符串(控制精度) ```python # 控制浮点数小数位数 precision_str = f"{random_float:.2f}" # 保留两位小数 print(f"格式化浮点数: {precision_str} | 类型: {type(precision_str)}") # 格式化成科学计数法 sci_str = f"{random_float:.2e}" print(f"科学计数法: {sci_str}") ``` #### 3. 使用`format()`方法 ```python format_str = format(random_float, ".3f") # 保留三位小数 print(f"format方法: {format_str} | 类型: {type(format_str)}") ``` #### 4. 随机数列表转字符串(引用[3]场景) ```python # 生成随机数列表 random_list = [random.randint(10, 99) for _ in range(5)] # 方法1:列表推导式 + join() list_str1 = ",".join([str(x) for x in random_list]) print(f"列表转字符串1: {list_str1}") # 方法2:map() + join() list_str2 = "|".join(map(str, random_list)) print(f"列表转字符串2: {list_str2}") ``` #### 输出示例: ``` 整数转字符串: 42 | 类型: <class 'str'> 浮点数转字符串: 7.831256 | 类型: <class 'str'> 格式化浮点数: 7.83 | 类型: <class 'str'> 科学计数法: 7.83e+00 format方法: 7.831 | 类型: <class 'str'> 列表转字符串1: 34,15,89,27,53 列表转字符串2: 34|15|89|27|53 ``` ### 关键点说明: 1. **基本转换**:使用`str()`是最简单直接的方法 2. **精度控制**:使用格式化字符串或`format()`控制小数位数 3. **类型验证**:转换后可用`type()`检查是否为字符串类型 4. **批量处理**:列表转换推荐使用`map()`或列表推导式结合`join()`[^3] > **应用场景**: > - 生成随机文件名/ID:`f"file_{str(random.randint(1000,9999))}.txt"` > - 数据库插入前的数据类型转换 > - 日志记录中的数值格式化输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值