1.输入:请输入一个0和1组成的二进制的字符串: 1101
把它转换成10进制 输出:13
解题思想:使用while 循环,每次从二进制字符串中取出第一位字符,使用 int() 函数将当前位的字符 '0' 或 '1' 转换为整数,然后将其乘以2并加上上一次的结果。最后得到的 d 就是转换后的十进制数字。
s = input("请输入一个由1和0组成二进制字符串:")
d = 0
while s:
d = d * 2 + int(s[0])
s = s[1:]
print(f"转换成十进制的数:{d}")
输出:
2.将字符串"你好"转换成字节,再将转换字节转成字符串(使用两种方式实现)
# 方法1:使用encode编码,使用decode解码
str_data = "你好"
str_data1 = str_data.encode("GBK")
str_data2 = str_data1.decode("GBK")
print("原字符串:", str_data)
print("转换成字节后:", str_data1)
print("再转回字符串后:", str_data2)
# 方法2:
str_data = "你好"
str_data1 = bytes(str_data, "GBK")
str_data2 = str(str_data1, "GBK")
print("原字符串:", str_data)
print("转换成字节后:", str_data1)
print("再转回字符串后:", str_data2)
输出:
3.异常处理: 遇到分母为0异常,执行打印异常信息: Division by zero
遇到字典元素键异常,执行为打印异常信息,不存在此键遇到序列索引异常,执行打印:索引超出范围
若没有遇到异常,打印: Normal
无论异常或正常,打印: Einallv
注意:需要模拟出异常,并验证异常处理是否能完成上面提到的情况
try:
# 模拟分母为0异常
1 / 0
# 模拟键值异常
# I= [1, 2, 3]
# value = I[4]
# 模拟字典元素键异常
d = {"key": "value"}
value = d["nonexistent_key"]
except ZeroDivisionError:
print("Division by zero")
except KeyError:
print("Keys does not exits")
except IndexError:
print("Index out of range")
else:
print("Normal")
finally:
print("Finally")
输出:
- 模拟分母为0异常
- 模拟序列索引异常
- 模拟字典元素异常
- 遇到没有异常
4.题目:
解题思想:我们首先定义了一个列表,其中包含了三个字典,每个字典代表一个学生的信息。然后,我们使用print函数打印了表头,使用format方法来控制输出格式。接下来,我们使用一个循环遍历学生列表,对于每个学生,我们从字典中提取姓名、学号、分数等信息,并使用format方法来打印这些信息,每个学生的信息都单独占据一行,并且居中对齐。
# 方法1使用format输出:
print_list = [
{"name": "zhangsan", "stu_id": "04101041", "score": [90, 80, 100]},
{"name": "lisi", "stu_id": "04101042", "score": [70, 80, 90]},
{"name": "wangwu", "stu_id": "04101043", "score": [76, 90, 80]}
]
# 打印表头
print("{:^10s}{:^10s}{:^10s}{:^10s}{:^10s}".format("stu id", "name", "Chinese", "Math", "English"))
# 遍历列表,逐个输出每个学生的信息
for i in print_list:
name = i["name"]
stu_id = i["stu_id"]
scores = i["score"]
chinese_score = scores[0]
math_score = scores[1]
english_score = scores[2]
# 打印每个学生的信息
print("{:^10s}{:^10s}{:^10d}{:^10d}{:^10d}".format(stu_id, name, chinese_score, math_score, english_score))
# 方法2:
print_list = [
{"name": "zhangsan", "stu id": "04101041", "score": [90, 80, 100]},
{"name": "lisi", "stu id": "04101042", "score": [70, 80, 90]},
{"name": "wangwu", "stu id": "04101043", "score": [76, 90, 80]}
]
# 打印表头
print(f"{'stu id':^10s}{'name':^10s}{'Chinese':^10s}{'Math':^10s}{'English':^10s}")
# 遍历列表,逐个输出每个学生的信息
for student in print_list:
name = student["name"]
stu_id = student["stu id"]
chinese_score, math_score, english_score = student["score"]
# 打印每个学生的信息
print(f"{stu_id:^10s}{name:^10s}{chinese_score:^10d}{math_score:^10d}{english_score:^10d}")
输出:
5.给你一个整数列表:例如:int list = [2,7,11,15],目标为9 要求打印出列表中两个元素相加之后结果等于9的元素以及下标(选做)
解题思想:首先,定义一个整数列表int_list和一个目标值sum_num使用,接下来使用for循环遍历列表中的每个元素,并计算目标值和当前元素之间的差值。如果差值在列表中,则说明找到了两个元素相加等于目标值的情况,打印出这两个元素的值和下标即可。其中,使用enumerate函数获取当前元素的下标i,使用index方法获取差值
int_list = [2, 7, 11, 15]
sum_num = 9
# 遍历列表中的每个元素
for i, num1 in enumerate(int_list):
# 计算差值
num2 = sum_num - num1
# 判断差值是否在列表中
if num2 in int_list:
# 如果在列表中,打印出相加等于目标值的两个元素的值和下标
j = int_list.index(num2)
print("第一个元素:{},下标:{},第二个元素:{},下标:{},和为:{}".format(num1, i, num2, j, num1 + num2))
输出: