在 Python 中,字符串(string)和数组(list)是两种常用的数据类型,它们的使用方式和一些常见操作有一些区别。

字符串

字符串是一系列有序的字符组成的序列。可以用单引号或双引号来表示一个字符串。例如:

1
2
string1 = 'Hello'
string2 = "World"

可以使用索引来访问字符串中的单个字符,索引从 0 开始。例如,string1[0] 将返回字符串 'H'

1
print(string1[0])  # 输出 'H'

也可以使用切片(slice)来获取子字符串。切片使用冒号 : 来指定起始位置和结束位置。例如,string1[1:4] 将返回字符串 'ell'

1
print(string1[1:4])  # 输出 'ell'

字符串是不可变的,意味着一旦创建就不能再修改。如果想修改字符串,只能通过创建一个新的字符串来实现。

数组

数组(list)是一系列有序的元素组成的序列。可以用方括号 [] 来创建一个数组,并且数组中的元素可以是不同的数据类型。例如:

1
array = [1, 'Hello', 3.14, True]

可以使用索引来访问数组中的单个元素,索引同样从 0 开始。例如,array[0] 将返回整数 1

1
print(array[0])  # 输出 1

也可以使用切片来获取子数组。切片的用法与字符串类似。例如,array[1:3] 将返回一个新的数组 [Hello, 3.14]

1
print(array[1:3])  # 输出 [Hello, 3.14]

与字符串不同,数组是可变的,可以修改数组中的元素。例如,可以通过索引来修改数组的某个元素。

1
2
array[0] = 100
print(array) # 输出 [100, 'Hello', 3.14, True]

列表添加多个元素

1
2
3
4
5
6
list1=[1,2,3]
list2=[1,2,3,4,5]
for item in list2:
list1.append(item)
list1
# [1, 2, 3, 1, 2, 3, 4, 5]

或者

1
2
3
4
5
list1=[1,2,3]
list2=[1,2,3,4,5]
list1.extend(list2)
list1
# [1, 2, 3, 1, 2, 3, 4, 5]

刷题

第0天的作业打卡

1
2
3
4
5
6
7
8
9
10
def looping(string):
length = len(string) # 获取字符串的长度
i = 0 # 初始化循环变量
while i < length:
print(f'comp {string[:length - i]} 9021') # 打印字符串的子串,使用f-string,将变量直接嵌入到字符串中,不需要使用额外的连接符或转换操作
i += 1 # 更新循环变量

if __name__ == '__main__':
string = "Programming"
looping(string)

Temperature conversions

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# celsius_to_fahrenheit.py
min_temperature = 0
max_temperature = 100
stride = 10

def celsius_to_fahrenheit(celsius):
return (celsius * 9 / 5) + 32

def celsius_to_fahrenheit_Table():
print("Celsius\tFahrenheit")
for celsius in range(min_temperature, max_temperature, stride):
fahrenheit = celsius_to_fahrenheit(celsius)
print(f"{celsius:7d}\t\t{fahrenheit:6.0f}")

if __name__ == '__main__':
celsius_to_fahrenheit_Table()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# fahrenheit_to_celsius.py
min_temperature = 0
max_temperature = 100
stride = 10

def fahrenheit_to_celsius(fahrenheit):
return 5 * (fahrenheit - 32) / 9

def fahrenheit_to_celsius_Table():
print("Fahrenheit\tCelsius")
for fahrenheit in range(min_temperature, max_temperature, stride):
celsius = fahrenheit_to_celsius(fahrenheit)
print(f"{fahrenheit:10d}\t\t{celsius:3.0f}")

if __name__ == '__main__':
fahrenheit_to_celsius_Table()

Max element and span in a list

使用管道,将字符串作为标准输入传递给脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# span.py
from random import seed, randint
import sys

def generate_number(seed_value,element_number):
seed(seed_value)
lst = [randint(0, 100) for _ in range(element_number)]
return lst

def maximum_difference(generate_number_list):
length=len(generate_number_list)
for j in range(0,length):
max_index = j
for i in range(j+1,length):
if generate_number_list[i]>generate_number_list[max_index]:
max_index=i
generate_number_list[j],generate_number_list[max_index]=generate_number_list[max_index],generate_number_list[j]
return generate_number_list[0]-generate_number_list[length-1]

def maximum_difference_with_builtin_operations(generate_number_list):
if len(generate_number_list) < 2:
return None
min_num = max_num = generate_number_list[0]
for num in generate_number_list:
min_num = min(min_num, num)
max_num = max(max_num, num)
return max_num - min_num

# [49, 97, 53, 5, 33, 65, 62, 51]

# [17, 72, 97, 8, 32, 15, 63, 97, 57, 60, 83, 48]

if __name__ == '__main__':
# seed_value=int(input("Input a seed for the random number generator: "))
# element_number=int(input("How many elements do you want to generate? "))
try:
seed_value = int(sys.stdin.readline().strip())
print("Input a seed for the random number generator: ",seed_value)
except ValueError:
print('Input is not an integer, giving up.')
sys.exit()
try:
element_number = int(sys.stdin.readline().strip())
print("How many elements do you want to generate? ",element_number)
except ValueError:
print('Input is not an integer, giving up.')
sys.exit()
if element_number <= 0:
print('Input should be strictly positive, giving up.')
sys.exit()
generate_number_list=generate_number(seed_value,element_number)
print(f'The list is: {generate_number_list}')
print(f'The maximum difference between largest and smallest values in this list is: {maximum_difference(generate_number_list)}')
print(f'Confirming with builtin operations: {maximum_difference_with_builtin_operations(generate_number_list)}')