如果下面代码有问题或者你有更好的实现方法欢迎与我私信~
1、输入一个字符串,内容是带小数的实数,例如"123.45",输出是两个整数变量x和y,x是整数部分123,y是小数部分45。你可以用split函数完成。
str =input()
L=str.split(".") #此函数可以将输入的小数部分的.符号最后消除,并用,号代替分割整数和小数
L=[int(e) for e in L] #分割后依旧是字符串形式,需要将字符串转化为数值
print(L[0])
print(L[1])
2、写Python程序find(s,x)来完成s.find()函数的基本功能。计算x字符串在s字符串中出现的开始位置。x没有在s出现的话,传回-1。
def find(s,x):
L=list(s)#将字符串转化为列表
i=0
for a in L:#遍历在列表L中的元素
if(a==x): #寻找有没有在列表元素中出现的元素x
return i #如果存在,就返回位置i,这里的位置i是从0计数
i=i+1 #如果不存在相当于else,继续循环下去
return -1 #for循环结束后,如果不满足条件,最后返回-1
print(find("hello",'e'))
运行结果
1
一定注意,同一层次的语句必须要有相同的缩进,一点都不能不同!!
3、在find()的基础上,写Python程序来完成replace(s,old,new)函数的功能,将所有在s中出现的old字符串转换成new字符串。
4、在find()的基础上,写Python程序来完成count(s,x)函数的基本功能,计算所有在s中出现的x字符串的个数。注意:计算出现的个数每一个字符不能重复计算。例如:s=“222222”,count(s,“222”)是2,不是4。
def count(s,x): #定义函数
if s.find(x) == -1: #寻找s字符串中是否存在x,若果没有没有存在,函数返回-1的值
return 0 #不存在x的字符串,则count函数返回0,即x出现次数为0
L = s.split(x) #如果存在,则用split函数将分割x,然后以字符串形式用逗号隔开以列表形式存在
#这里L=["222","222"]
return len(L)-1 #
i = count("222222","222")
print(i)
显示IndentationError:unindent dose not match any outer indentation level
出现这种问题,一般都是因为没有缩进导致的问题。使用文本编辑器notepad++显示代码或者打开脚本文件,在菜单栏中选择视图->显示符号->显示空格与制表符。可以查看问题所在,是不是制表符tab与空格space混用导致运行出现的问题
5、给出一个python程序片段,用for循环,用print语句输出1到100的奇数
for i in range(101):
if i%2!=0:
print(i)
或者
n=0
while n<100:
n=n+1
if n%2==0:
continue #continue语句会直接继续下一轮循环,后面的print()语句不会执行
print(n)
6、编写Python程序,求出10到100之间不能被3整除,又不能被7整除的所有整数
n=9
while n>=9 and n<100:
n=n+1
if n%3==0 or n%7==0:
continue
print(n)
7、编写Python程序,计算一个任意位数的整数的各位数字之和。例如,输入12345,程序计算显示1+2+3+4+5的值
num=int(input())
sum=0
while num>0:
m=num%10
sum=sum+m
num=num//10
print(sum)
这段正确代码之前,编译出现问题,num=input()当我输入数字时,报错:TypeError:’>'not supported between instances of ‘str’ and ‘int’ ,报错原因:input()输入的内容是一个字符串,字符串跟整数型值比较,类型不匹配,故要输入数字时,应该改为int(input())
注意还有个问题,这里数字整除的符号用的//这里与传统的C语言、Java、C++方法不一样,它们的整除符号是/,我在Python的运行环境里面,使用/得出来的结果是小数,比如4.5/2结果是2.25而不是我想象中的2。在Python的环境中/保留了小数,无论操作数是整数还是浮点数,结果总是浮点数,所以在Python3.0环境中,整除的符号用//
8、设sum=0!+1!+…+n!,编写Python程序,求当n为何值时,sum的十进制表示超过20位
def jie(n): #计算阶乘和函数
x=1
sum=1
for i in range(1,n+1): #注意这里的范围是从1到n,左闭右开
x=x*i
sum=sum+x #sum初始值是1,因为0的阶乘是1,若在range里面一开始左范围是0会导致0的阶乘计算结果是0,错误
return sum
def wei(sum):#计算位数个数的函数
cnt=0
while sum>0:
sum=sum//10 #整除运算,得到整数结果
cnt=cnt+1
return cnt
n=0
sum=0
while n>=0:
sum=jie(n)
count=wei(sum)
if(count>=20):
print(n)
break
n=n+1
21
9、编写Python程序,根据用户的输入的整数n,列出斐波拉契数列的前n项,并求出前n项的和。其中,斐波拉契数列的前n项通项为Fn=Fn+1+Fn+2(n>=2),其中F0=0,F1=1;
要求:程序能够判定n的合法性(n应该是一个正整数),否则,提示用户重新输入
提示:尽量避免使用递归实现,若无法避免,建议测试时选择n<30
这里补充斐波拉契数列的两种写法
循环写法
#循环写法
a,b=0,1
list1=[0,1]#这里是第一项和第二项
n=int(input())#输入需要添加的项数
for i in range(n):
a,b=b,a+b
list1.append(b)#在列表后面添加n个元素,则新列表有n+2个元素在内
print(list1)
或
def Fib(n):
f,f1,f2=0,0,1
for i in range(0,n-1):
f=f1+f2
f1=f2
f2=f
return f2
num=int(input())
print(Fib(num))
递归写法
#递归写法,从第0项开始
def Fib(n):
if n==0:
return 0
if n==1:
return 1
if n>1:
return Fib(n-1)+Fib(n-2)
num=int(input())
pr