python面试基础问题
1.不使用中间变量,交换两个变量的值?
#方法一:
a = 10
b = 20
print(f"a={a}, b={b}")
a, b = b, a
print(f"a={a}, b={b}")
#方法二:相加减
a = 10
b = 20
print(f"a={a}, b={b}")
a = a + b
b = a - b
a = a - b
print(f"a={a}, b={b}")
#方法三:异或运算符(^)
a = 10
b = 20
print(f"a={a}, b={b}")
a = a ^ b
print(a)#30
b = a ^ b
print(b)#10
a = a ^ b
print(a)#20
print(f"a={a}, b={b}")
2.打印九九乘法表
for i in range (1, 10):
for j in range(1,i+1):
print(f"{j}*{i}={i*j}", end="\t")
print(" ")
3.update作用是连接两个字典
dict1={"one":1,"two":2,"three":3}
dict2={"four":4,"five":5,"six":6}
dict1.update(dict2)
print(dict1)# Output: {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6}
4.执行下面代码,输入0的时候会到zero异常处理
dividend = 1
divide =int(input("请输入除数:"))
try:
result = dividend / divide
print("结果为:", result)
except ZeroDivisionError:
print("除数不能为0!")#除数为零跳到这里
except Exception:
print("未知错误!")
else:
print("正常执行!")
5.辗转相除法求最大公约数和最小公倍数
#最大公约数和最小公倍数(辗转相除法)
#最大公约数
def gcd(a, b):
while b!=0:
a,b = b, a%b
return a
#最小公倍数=a*b//最大公约数
def lcm(a, b):
return a*b//gcd(a,b)
number1 = int(input("请输入第一个数字:"))
number2 = int(input("请输入第二个数字:"))
print("最大公约数为:", gcd(number1, number2))
print("最小公倍数为:", lcm(number1, number2))
6.字符串中find方法
#find中的两个参数,第一个参数是要查找的字符串,第二个参数是开始查找的索引位置,如果没有找到,则返回-1。
str1 = "exam is a example!"
str2 = "exam"
print(str1.find(str2,7))#10,返回索引值
7.子串验证方法
#子串验证
s1='aabbcc'
s2='abc'
#find()方法一:
find = s1.find(s2)
if find != -1:
print("s2 是 s1 的子串")
else:
print("s2 不是 s1 的子串")
#count()方法二:
count = s1.count(s2)#个数
if count >0:
print("s2 是 s1 的子串")
else:
print("s2 不是 s1 的子串")
#in()方法三:
if s2 in s1:
print("s2 是 s1 的子串")
else:
print("s2 不是 s1 的子串")
#index()方法:
if s2 in s1:
print("s2 是 s1 的子串,位置为:",s1.index(s2))
else:
print("s2 不是 s1 的子串")
8.is 和 == 的区别
is用于判断两个变量引用对象是否为同一个,即比较两个对象在内存中的地址是否一样,而==用于判断引用变量的值是否相等。
对于不可变对象(如整数、浮点数、字符串、元组等),它们可能在内存中共享同一个地址,此时 is
也会返回True。
对于可变对象(如列表、字典等),即使两个对象的值看起来相同,它们也一定是在内存中独立的两个对象,因此 is
运算符会返回False。
#字符串
x = '123'
y = '123'
print(x is y) # Output: True
print(x == y) # Output: True
print(id(x),id(y))#1973353912880 1973353912880
#数字
a = 123
b = 123
print(x is y) # Output: True
print(x == y) # Output: True
print(id(a),id(b))#140720082690664 140720082690664
#列表
c = [1,2,3]
d = [1,2,3]
print(c is d) # Output: False
print(c == d) # Output: True
print(id(c),id(d))#1973353913472 1973354455488
#字典
e = {'one':1,'two':2,'three':3}
f = {'one':1,'two':2,'three':3}
print(e is f) # Output: False
print(e == f) # Output: True
print(id(e),id(f))#1973353912448 1973354005312
#元组
g = (1,2,3)
h = (1,2,3)
print(g is h) # Output: True
print(g == h) # Output: True
print(id(g),id(h))#2662364434560 2662364434560
#集合
i = {1,2,3}
j = {1,2,3}
print(i is j) # Output: False
print(i == j) # Output: True
print(id(i),id(j))#1979144783904 1979145134016
#布尔值
k = True
l = True
print(k is l) # Output: True
print(k == l) # Output: True
print(id(k),id(l))#140720081218080 140720081218080
#None
m = None
n = None
print(m is n) # Output: True
print(m == n) # Output: True
print(id(m),id(n))#140720081300208 140720081300208
9.list列表插入insert方法
列表的三种插入方法:
append() | 增加指定数据到列表中 |
---|---|
extend() | 列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表 |
insert() | 指定位置新增数据 |
insert有两个参数,一个是要插入的位置,一个是插入的值
list1 = [1,2,3,4,5]
list1.insert(2,[1,2,3,4])
print(list1) # Output: [1, 2, [1, 2, 3, 4], 3, 4, 5]
10.编写一个函数,有一个参数str1,输入信息如'1.2.3.4.5',使用函数对齐进行处理,要求最终的返回结果为'5-4-3-2-1'。
#方法一:使用字符串的replace()方法
def left(str1):
str = str1[::-1]
str = str.replace(".","-")
return str
#方法二:使用列表的reverse()方法和join()方法
def right(str1):
str =str1.split(".")
str.reverse()
str = "-".join(str)
return str
str1 = input("类似'1.2.3.4.5'的输入:")
print(left(str1))
print(right(str1))
11.sets是无序的,不能用下标访问元素
sets = {1, 2, 3, 4, 5}
#print(sets[2])#会报错,因为sets是无序的,所以不能用下标访问元素