1.给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
class Solution:
def findDuplicate(self, nums):
"""
【不修改数组找出重复的数字】
给定一个包含 n + 1 个整数的数组 nums,
其数字都在 1 到 n 之间(包括 1 和 n),
可知至少存在一个重复的整数。
假设只有一个重复的整数,找出这个重复的数。
:type nums: List[int]
:rtype: int
"""
left = 1
right = len(nums) - 1
while left < right:
# 取中点有两种方式,偏左和偏右
mid = left + (right - left + 1) // 2 # 4
count = 0
for num in nums:
if num < mid:
count += 1
if count < mid:
# 比 4 小的个数,最多就只能是 3
# 所以重复的肯定不是 [1,2,3],不能排除 4
# 因为左边不变,所以取中点的时候,就要偏右
left = mid
else:
# 比 4 小的个数,达到 4 或者更多
# 重复的就落在 [1,2,3]
right = mid - 1
# 跳出循环肯定是因为 start = end
return left
2.找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
def print_fuhe(n):
for i in range(1,n+1):
if (i%5 ==0 or i%6==0) and not (i%5 ==0 and i%6==0):
print(i)
n = int(input("输入需要处理的范围从0开始:"))
print_fuhe(n)
3:写一个方法,计算列表所有偶数下标元素的和(注意返回值)
def print_sum(ls):
sum = 0
i = 0
while i < len(ls):
sum += ls[i]
i += 2
return sum
ls = [1,2,3,4,5]
print("列表是:{},偶数下标元素和是:{}".format(ls,print_sum(ls)))
4:请使用函数完成选择、冒泡、插入三种排序
laaa = [1,3,4,24,4,3,2,4,5,3,234]
def xuanze(ls):
x = len(ls)
if x < 2:
return
for i in range(x):
a = i
for j in range(i+1,x):
if ls[a] > ls[j]:
a = j
if i != a:
ls[i],ls[a] = ls[a],ls[i]
return ls
def maopao(ls):
x= len(ls)
if x < 2:
return
for i in range(x):
for j in range(x-1-i):
if ls[j] > ls [j+1]:
ls[j],ls[j+1] = ls[j+1],ls[j]
return ls
def charu(ls):
x = len(ls)
if x < 2:
return
for i in range(x):
a,j = ls[i],i-1
while j >=0 and ls[j] > a:
ls[j+1] = ls[j]
j -= 1
ls[j+1] = a
return ls
根据完整的路径从路径中分离文件路径、文件名及扩展名
ls="D:\作业\作业.py"
def file(ls):
way=ls[0:11]
name=ls[11:15]
extension=ls[16:]
print(way,name,extension)
file(ls)
将字母全部转换为大写或小写
ls="ltf.wyb.hhh"
print(ls.upper())
根据标点符号对字符串进行分行
ls=" hhh.123.py"
print(ls.split("."))
去掉字符串数组中每个字符串的空格
ls=" hhh 123 hahha"
print(ls.strip())
随意输入你心中想到的一个书名,然后输出它的字符串长度。 (len()属性:可以得字符串的长度)
book=str(input("请输入书名:"))
print(len(book))
两个学员输入各自最喜欢的游戏名称,判断是否一致,如
果相等,则输出你们俩喜欢相同的游戏;如果不相同,则输
出你们俩喜欢不相同的游戏。
perple1=str(input("请输入游戏:"))
perple2=str(input("请输入游戏:"))
for i in perple1 :
for y in perple2 :
if i == y :
print("游戏一样")
else:
print("游戏不一样")
上题中两位同学输入 lol和 LOL代表同一游戏,怎么办?
game1=str(input("请输入游戏名称:"))
game2=str(input("请输入游戏名称:"))
if game1.upper() == game2.upper():
print("游戏一样")
else:
print("游戏不一样")
让用户输入一个日期格式如“2008/08/08”,将 输入的日
期格式转换为“2008年-8月-8日”。
time=input("请输入日期:")
s1=time.split("/")
newtime="{}年-{}月-{}日".format(s1[0],int(s1[1]),int(s1[2]))
print(newtime)
接收用户输入的字符串,将其中的字符进行排序(升
序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba”。
ls='cabed'
l=list(ls)
l.sort()
print(l)
l.reverse()
print(l)
接收用户输入的一句英文,将其中的单词以反序输
出,“hello c sharp”→“sharp c hello”。
english=input("请输入一句英文:")
x=english.split(" ")
y=x[::-1]
x1=" ".join(y)
print(x1)
19.从请求地址中提取出用户名和域名
http://www.163.com?userName=admin&pwd=123456
url='http://www.163.com?userName=admin&pwd=123456'
ls = url.split("/")
s1 = ls[2]
ls2 = s1.split("?")
print("域名是:{}".format(ls2[0]))
s1 = ls2[1]
ls3 = s1.split("&")
s1 = ls3[0]
ls4 = s1.split("=")
print("用户名是:{}".format(ls4[1]))
20.有个字符串数组,存储了10个书名,书名有长有短,现
在将他们统一处理,若书名长度大于10,则截取长度8的
子串并且最后添加“...”,加一个竖线后输出作者的名字。
ls = ["MY","NA","ME","IS","LTF"]
dir = {"MY","NA","ME","IS","LTF"}
for i in range(0,len(ls)):
s = ls[i]
if len(s) > 10:
s = s[0:9]+"..._"+str(dir[ls[i]])
ls[i] = s
print(ls)
让用户输入一句话,找出所有"呵"的位置。
s = input("请输入一段话!")
ls = []
for i in range(0,len(s)):
if s[i] == "呵":
ls.append(i)
print("呵的位置是%s"%ls)
让用户输入一句话,找出所有"呵呵"的位置。
s = input("请输入一段话!")
ls = []
for i in range(0,len(s)-1):
if s[i] == "呵" and s[i+1]=="呵":
ls.append(i)
print("呵呵的位置是%s"%ls)
23.让用户输入一句话,判断这句话中有没有邪恶,如果有邪
恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变
成”老牛很**”;
word = input("请输入字符串:")
print("邪恶消失后:{}".format(word.replace("邪恶","**")))
24.如何判断一个字符串是否为另一个字符串的子串
find()
index()
双层循环完成
??
25.如何验证一个字符串中的每一个字符均在另一个字符串
中出现过
双层循环
name = "mkyong is learning python 123"
if name.find("python") != -1:
print("found python!")
else:
print("nothing")
26.如何随机生成无数字的全字母的字符串
import random
import string
random_str = ''.join(random.sample(string.ascii_lowercase , 10))
print(random_str)
27.如何随机生成带数字和字母的字符串
import random
import string
random_str = ''.join(random.sample(string.ascii_letters + string.digits, 20))
print(random_str)
28.如何判定一个字符串中既有数字又有字母
string=input("请输入数据\n")
if(not(string.isdigit()) and not(string.isalpha())):
print("该数据中有数字也有字母")
29.字符串内的字符排序(只按字母序不论大小写)
import random
import string
random_str = ''.join(random.sample(string.ascii_lowercase , 10))
random_str = "".join((lambda x:(x.sort(),x)[1])(list(random_str)))
print(random_str)
30.判断一个字符是否是回文字符串(面试题)
"1234567654321"
"上海自来水来自海上"
#双指针
def is_palindrome(count):
for i in range(0,len(count)//2):
if count[i] != count[len(count)-i-1]:
return False
return True
word="上海自来水来自海上"
print(is_palindrome(word))