本文主要是介绍python练习一百例 笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
两万多字诠释python最经典基础算法之100题【内含思路、程序和答案】【python初学者必备】_zhulin1028的博客-CSDN博客_python基础算法题
题目1:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
L=[1,2,3,4]
a=0
for n in L:sum=a+n*100for m in L:if m!=n:sum1=a+m*10for k in L:if k != m and k != n:sum2=a+kprint(sum+sum1+sum2)
#这个很好,慢慢试出来的。这个每次都拿a(值为0)加是一种不错的轮流使用每个数的思维。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for i in range(1,5):for k in range(1,5):for j in range(1,5):if (i != k) and (i != j) and (k != j):print(i,j,k)
#这是给的答案。
#1,2,3,4四个数字能组成多少个互不相同的无重复数字的三位数?各是多少?
#要求:三位数,互不相同,无重复, 基础数字只有4个
#输入:无输入
#输出:输出所有的数字,且计算数字总共的个数
L=[1,2,3,4]
t=0
for i in range(1,5,1):for j in range(1,5,1):for k in range(1,5,1):if i!=j!=k:print(i,j,k)t=t+1
print(t)
题目2:输入某年某月某日,判断这一天是这一年的第几天?https://blog.csdn.net/qq_43468607/article/details/103205745?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164931697416780255292800%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164931697416780255292800&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-103205745.142%5Ev6%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=python%E7%BB%83%E4%B9%A0&spm=1018.2226.3001.4187#2_22
L=[31,28,31,30,31,30,31,31,30,31,30,30,31]
L1=[31,29,31,30,31,30,31,31,30,31,30,30,31]
x=input('请输入年份(例:2022):')
y=input('请输入月日(例:0301):')
x=int(x)
y=int(y)
sum=0
if x%400==0 or (x%4==0and x%100!=0):m=y//100for n in range(12):if n<m-1:sum=sum+L1[n]
else:m=y//100for n in [0,1,2,3,4,5,6,7,8,9,10,11]:if n<m-1:sum=sum+L[n]
k=sum+y-m*100
print('天数',k)
#注意,12月只把前11个月的天加满,再加单独的日子。
#if x%400==0 or (x%4==0and x%100!=0): 注意这个and or 的用法
range(12)==[0,1,2,3,4,5,6,7,8,9,10,11]
# -*- coding: UTF-8 -*-
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入某一个月份的天数:"))#将月份逐渐相加添加到列表中
months = [0,31,59,90,120,151,181,212,243,273,304,334]
if 0 < month <= 12:sum = months[month-1]
else:print("超出了年份的范围,年月份是你家定的啊!")
sum += day
if ((year % 400 == 0) or (year %4 == 0) and (year % 100 != 0)):if(month > 2):sum += 1
print('这一天是这一年的%d日'%sum)#这个闰年的第几天就是,非闰年的天数加上一天
#输入某年某月某日 判断输入的是第几天
#输入,输出,计算
#输入:年月日
#输出:第几天
#计算:首先判断是闰年还是非闰年,然后通过输入的月份把此月份之前的日子加上,然后通过几号再加上这个月的天数就是这一天
#在这一年中的天数了
#闰年规则:能被4 整除,但不能被一百整除,或者能被400整除
t=input('请输入年月日(例:20220316)')
n=0
year=int(t[0:4])#这里用eval怎么用?
month=int(t[4:6])#这里用冒号“:”不能用逗号“,”
day=int(t[6:8])
if year%4!=0 or year%100==0:if year%400==0:L=[0,0,31,60,91,121,152,182,213,244,274,305,335]n=n+L[month]n=n+dayelse:L=[0,0,31,59,90,120,151,181,212,243,273,304,334]n = n + L[month]n = n + day
else:L=L=[0,0,31,59,90,120,151,181,212,243,273,304,334]n = n + L[month]n = n + day
print('这是一年中的第%d天'%n)
题目3:输入三个整数x,y,z,请把这三个数由小到大输出。https://blog.csdn.net/qq_43468607/article/details/103205745?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164931697416780255292800%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164931697416780255292800&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-103205745.142%5Ev6%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=python%E7%BB%83%E4%B9%A0&spm=1018.2226.3001.4187#3xyz_49
x=input('x:')
y=input('y:')
z=input('z')
x=int(x)
y=int(y)
z=int(z)
L=[x,y,z]
L.sort()
print(L)#L.sort()是把列表L从小到大排列。
#1、列表的成员函数:L.sort(),在原位重新排列列表,未创建新的列表;# 2、内建函数:sorted(L),产生一个新的列表,不改变原列表;
#!/usr/bin/python
# -*- coding: UTF-8 -*-
first = int(input("请输入第一个数:"))
second = int(input("请输入第二个数字:"))
last = int(input("请输入第三个数字:"))if((first > second) and (first > last) and (second > last)):print(first,second,last)
if((last > second) and (last > first) and (second > last)):print(last,second,last)
if((second > first) and (second > last) and (first > last)):print(second,first,last)
#答案用的比较的方式
#输入3个整数,把这3个数从小到大输出
#输入:3个整数
#输出;从小到大排列的这3个整数
#计算;先比较将最小的赋值给T,然后比较剩下的,再赋值再输出
a=int(input('请输入一个整数:'))
b=int(input('请输入一个整数:'))
c=int(input('请输入一个整数:'))
if (a<=b) and (b<=c) and a<c:print(a,b,c)
elif a<=b and b>=c and a<=c:print(a,c,b)
elif a>=b and b>=c:print(c,b,a)
elif a>=b and b<=c and a>=c:print(b,c,a)
elif a>=b and b<=c and a<=c:#这里可以直接else 好像,在这种要求上就一种可能了。print(b,a,c)
#总结并不一定要赋值什么的,也可以饱和式救援,直接列出他们的条件就可以了。
#题目4:斐波那契数列。
x=input('前几项:(直接输入数字)')
x=int(x)#开始没注意这个b=1
n=2
if x==1:#开始没注意print([1])
elif x==2:print([1,1])
else:L = [1, 1, 2]while n<x-1:#开始是n<x-1,多输出了一项。,###while 相当于多个if的组合?a=L[-2]+L[-1]L.append(a)n=n+1print(L)#开始放在前面,输入1的时候,即输出[1],也输出[1,1,2]了。print(len(L))#用来验证数列数量的正确性。
答案
#!/usr/bin/python
# -*- coding: UTF-8 -*-
n = int(input("请输入指定斐波那契的具体哪一个数值:"))
def name(n):if (n == 1 or n == 2):return 1else:return name(n-1) + name(n - 2)
print(name(n))
#第一项0第二项1,后面每一项是前两项之和
#输入:第几项
#输出:数列的前N项
#计算:不断叠加
n=int(input('请输入数列长度'))
L=[0]
t=1
a=0
b=1
c=0
while t<n:#用while不能用if 开始用了if导致只能输出长度为1的数列L.append(b)c=a+ba=bb=ct=t+1
print(L)
题目5:将一个列表的数据复制到另一个列表中。 题目5:将一个列表的数据复制到另一个列表中。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
cla = [0,1,2,3,4,5,6,7,8,9]
alc = []
alc = cla.copy()
print(cla)
print(alc)
L=list(range(30))# 要顶格写 啊,一直报错,没找到原因,结果是没有顶格写。
print(L)
M=[]
for i in L:M.append(i)
print(M)
第三次
#将一个列表中的数据复制到另一个列表中
#输入:无
#输出:另一个列表
#计算:将表1中的数据一个一个复制到另一个列表里:计算中表1的数据量,
L=[1,2,3,4,5,6]
n=len(L)
M=[]
for i in L:M.append(i)
print(M)
题目6:输出 9*9 乘法口诀表。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
import numpy as np
L=np.array([])
for i in range (1,10):#为什么不能for i,j in rangge(10),range(10)for j in range(1, 10):k=i*jprint('%d*%d=%d'%(i,j,k),end=',')print()
答案
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for i in range(1,10):for j in range(1,i+1):print("%d*%d=%d" % (i,j,i*j),end = " ")print()
#输出9*9乘法口诀
#输入:无
#输出99乘法口诀
for i in range(1,10):for j in range(1,10):m=i*jprint('%d*%d=%d'%(i,j,m),end=',')#%后面如果不止一个变量,要用括号括起来。 2.是%d 不是d%。print(end='\n')#\t :表示空4个字符,类似于文档中的缩进功能,相当于按一个Tab键。\n :表示换行,相当于按一个 回车键\n\t : 表示换行的同时空4个字符。
题目7:暂停一秒输出。 程序分析:使用 time 模块的 sleep() 函数。
import time
print("kaishi")
time.sleep(3)
print("henshuai")
再次练习的结果:
#暂停输出一秒
#
from time import sleep
print('第一个输出')
sleep(1)#这个需不需要time.sleep
print('延迟了一秒输出')
答案
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import timeprint time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))# 暂停一秒
time.sleep(1)print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
————————————————
版权声明:本文为CSDN博主「Ctrl精」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43468607/article/details/103205745
题目8:暂停一秒输出,并格式化当前时间。https://blog.csdn.net/qq_43468607/article/details/103205745?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164931697416780255292800%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164931697416780255292800&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-103205745.142%5Ev6%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=python%E7%BB%83%E4%B9%A0&spm=1018.2226.3001.4187#8_223
from datetime import datetime
import time
dt=datetime.now()
shijian=dt.strftime('%Y/%M/%d %H:%M:%S')
print('算好了,等一秒。')
time.sleep(1)
print(shijian)
#暂停输出一秒,并格式化当前时间
#先输出当前时间 暂停一秒再输出格式化之后的当前时间
from time import sleep
import time
import datetime
shijian=datetime.datetime.now()
geshi=time.strftime('%Y%m%d%H%M%S',time.localtime())
print('时间为:',shijian)#这里的shijian是的格式是字符,并不是变量。相当于一个已经加了"''"的字符串
sleep(1)
geshi=time.strftime('%Y%m%d%H%M%S',time.localtime())
print('一秒后:',end='')
print(geshi)
题目9:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?https://blog.csdn.net/qq_43468607/article/details/103205745?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164931697416780255292800%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164931697416780255292800&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-103205745.142%5Ev6%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=python%E7%BB%83%E4%B9%A0&spm=1018.2226.3001.4187#93_258
#题目9:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
#分析问题
#输入 输出 计算
#计算 一个自变量时间 可以设3个因变量 ,3生产单元设一个变量,每增加一个月,那个月的的生产单元乘以2,而 #生产单元# 也随月份变化
#存量单元,就是输出的当前月份有的兔子的对数,每个新的存量单元就是,旧的存量单元加上生产单元乘以2 #第三个变量输出是储存的当前的兔子的数量
#关于生产单元0120 3 45 1 6 2 7 3 8 4 9 6 10 9 11 13 i(k-1)+i(k-3)
#关于存量单元 k=1+i(1)+i(2)+.....i(k)
#T=input('第几个月(例:1,2,3...):')
T=int(T)
L=[0,0,0,1]#这是生产单元的数量
i=3
def f(x):return L[x-3]+L[x-1]
while i<T:L.append(f(i+1))i=i+1#这个循环让L的生产单元更新到输入的月份
j=0
M=1
while j<=T:M=M+L[j]j=j+1
print('%d月有%d对兔子'%(T,M))#这次很重要的是把因变量进行了分离,分开解决,复合起来太复杂了。
#计算中分析选择 自变量 因变量和缕清他们的关系很重要。
答案
#不死神兔
# !/usr/bin/python
# -*- coding: UTF-8 -*-f1 = 1
f2 = 1
for i in range(1, 22):print('%12ld %12ld' % (f1, f2))if (i % 3) == 0:print(' ')f1 = f1 + f2f2 = f1 + f2
##题目9:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
# #小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
#输入:月份
#输出:这个月份兔子的总数
#流程:1 0 2 3 5# +0 +0 +1 +1 +2 +3 +5 +8
#增加的数列为在前面增加了一项的斐波那契数列
n=int(input('请输入月份'))
L=[0,0]
t=1
a=0
b=1
c=0
while t<n-1:#用while不能用if 开始用了if导致只能输出长度为1的数列L.append(b)c=a+ba=bb=ct=t+1
print(L)
SUM=1
for i in L:SUM=SUM+i#这里是SUM+i,不是1+i,因为SUM是不断跟之前的值叠加的,因为如果是1+i的话,SUM就不是叠加的了。
print('兔子的个数是:',SUM)
题目10:判断101-200之间有多少个素数,并输出所有素数。
#目10:判断101-200之间有多少个素数,并输出所有素数。
#分析问题 什么事素数?(除了一和本身没有其他因数的数) 如何确定一个数不是素数?
#过程中遇到的问题
L=list(range(101,201))
M=[]
for i in range(101,201):for j in range(2,101):#这里可以改成(2,i-1),就对所有的素数符合定义。# def notsu(n):# return n%j==0# M=list(filter(notsu,L))if i%j==0 :#如果是不等号的话,每个都满足(因为每个数都要被除一下)。print(i,j)M.append(i)
N=[]
for k in L:if k not in M: #这个很有用N.append(k)
print(N)
print(len(N))
# !/usr/bin/python
# -*- coding: UTF-8 -*-h = 0
leap = 1
from math import sqrt
from sys import stdoutfor m in range(101, 201):k = int(sqrt(m + 1))for i in range(2, k + 1):if m % i == 0:leap = 0breakif leap == 1:print('%-4d' % m)h += 1if h % 10 == 0:print('')leap = 1
print('输出的素数的个数是: %d' % h)
#判断101-200之间有多少个素数:
#2、素数指的是在正整数范围内,大于1并且只能被1和自身整除的数。
#输入:一个数
#输出:是否为素数
#计算:从一到这个数每个都除一下
t=int(input('请输入一个正整数'))
if t>1:m=0for i in range(2,t):n=t%iif n==0:print('%d不是素数'%t)m=1break#这个break很重要,不然就会输出几个“这不是一个素数”if m==0:print('%d是一个素数'%t)
if t==1:print('1是一个素数')m=0
for j in range(101,201):for i in range(2,j):n=j%iif n==0:m=m+1break#这里的break很重要,如果没有break,那么一个非素数有几个公约数那么,在这个非素数里m就会+几。
m=100-m
print('101到200中间的素数有%d个'%m)
题目11:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。https://blog.csdn.net/qq_43468607/article/details/103205745?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164931697416780255292800%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164931697416780255292800&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-103205745.142%5Ev6%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=python%E7%BB%83%E4%B9%A0&spm=1018.2226.3001.4187#11_312
#题目11:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
#分析问题 输入 输出
#无输入 输出很直接
#三位数 各位立方和等于本身
for i in range(100,1000):t=str(i)bai=eval(t[0])shi=eval(t[1])ge=eval(t[2])if i==bai**3+shi**3+ge**3:print(i)#总结: str 加上 eval 的组合 任取数字中的某一位数的效果很好
答案
#!/usr/bin/python
# -*- coding: UTF-8 -*-for i in range(1,10):for j in range(0,10):for k in range(0,10):u1 = pow(i,3) + pow(j,3) + pow(k,3)u2 = i*100 + j*10 + kif u1 == u2:print("满足的水仙花数为:" + str(u1))elif u1 < u2 or u1 > u2:passelse:pass
答案的思路的 把他分成两个数相等的就是他的思路也很好。
#题目11:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
#分析问题 输入 输出
#输入:3位数
#输出:是否为水仙花数
#计算:用eval提取每个位置上的数。
t=input('请输入一个3位数:')
m=int(t)
a=eval(t[0])
b=eval(t[1])
c=eval(t[2])
if m==a**3+b**3+c**3:print('%d是一个水仙花数'%m)
else:print('%d不是一个水仙花数'%m)
print('水仙花数有:',end='')
for i in range(100,1000):a = int(str(i)[0])b = int(str(i)[1])c = int(str(i)[2])if i==a**3+b**3+c**3:print(i,end=',')
题目12:学习成绩分类:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
'''题目12:学习成绩分类:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
分析问题,
输入 输出 计算
计算 判断分数范围 然后输出
'''
t=input('请输入名字:')
m=input('请输入分数:')
m=eval(m)if m>=90:print(t,':','A')
elif m>=60:print(t, ':', 'B')
else:print(t, ':', 'C')
这是改的一个录入学生成绩的程序
'''题目12:学习成绩分类:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
分析问题,
输入 输出 计算
计算 判断分数范围 然后输出 如何循环关于 判断是否输入的计算? 用while 在循环末尾加上一个判断条件的输入或者改变条件?
'''
n=input('请输入输入(1) or 完成(2)(只用输入文字):')
d={}#不能放到循环里面去 否则d会不符按重置
if eval(n)==1:while eval(n)==1:t=input('请输入名字:')m=input('请输入分数:')m=eval(m)d[t]=mn=input('请输入输入(1) or 完成(2)(只用输入文字):')print(d)#这个循环内外的 input 很重要。
#while相当于很多个 if;for 相当于很多和陈述执行语句?
答案
#!/usr/bin/python
# -*- coding: UTF-8 -*-score = int(input('输入分数:\n'))
if score >= 90:grade = 'A'
elif score >= 60:grade = 'B'
else:grade = 'C'print('%d 属于 %s' % (score,grade))
'''题目12:学习成绩分类:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
分析问题,'''
#输入:学生的成绩
#输出:对应的字母
#计算:几个条件判断
t=float(input('请输入分数'))
if t<60:print('该同学成绩为C')
elif t<=89:print('该同学成绩为B')
else:print('该同学成绩为A')
题目13:获取当前的时间并输出指定格式的日期。
#题目13:获取当前的时间并输出指定格式的日期。
#输入:无输入 输出:格式化后的当前时间 #
#方法:导入 datetime库 获得时间并 在输出的时候格式化
import datetime
import time
dt=datetime.datetime.now()#为什么时两个datetime
dt=dt.strftime("%Y年%m月%d日%H时%M份%S秒")#为什么这个没有 time 或者 datetime 的前缀
print(dt)#若from datetime import datetime 则使用datetime.now() 即可
#若import datetime 则要datetime.datetime.now()
#应该是第一个已经导入了datetime 函数 可以直接使用,第二个需要先指明datetime库再用datetime.now() 来使用函数。
【Python】日期时间格式化输出_暗潮汹涌的博客-CSDN博客_日期格式化输出python
这个里面有格式化时间的时候,各个符号代表什么的说明。
import datetime
import time
shijian=datetime.datetime.now()
print(shijian)
#shijian=str(shijian)
print(shijian.strftime('%Y年%m月%d日%H时%M分%S秒'))#只可以是这个格式,
# 不可以time.strftime(format,shijian),运行不出来,相关的可以研究一下
- 题目14:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符输出的数并分别统计每一种类型的个数。用到
#题目14:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符输出的数并分别统计每一种类型的个数。
#输入:一行字符 输出:其中不同类型字符的数量
#计算:首先用len()函数统计数量,再分别把打字符串分成一个一个字符组成的单独的字符, 判断每一个字符为哪一种类型,然后
t=input('请输入字符串:')
n=len(t)
letter=0#这些先赋予变量,且先等于0 我在写计算规划的时候没有写。
shuzi=0
zhongwen=0
kongge=0
qitazifu=0
for i in range(n):if '\u4e00' <= t[i] <= '\u9fff':#这里一开始中文会被算到 英文字符里面去,然后调整了一下顺序,先判断是否为中文就可以了。#因为中文的判定条件更加的逼近,所有有重合的情况下先判定这个,可以避免中文的个数统计到英文里,而且经过这一筛查,下一个判断里的结果就不包含中文了。(更精确。)zhongwen=zhongwen+1elif t[i].isalpha():#汉字也会被算在里面(还有其他的除了英文的字符会被算在吗?)letter=letter+1elif t[i].isspace():kongge=kongge+1elif t[i].isdigit():shuzi=shuzi+1else:qitazifu=qitazifu+1
print('英文字符有%d个,中文字符有%d个,数字有%d个,空格有%d个,其他字符有%d个'%(letter,zhongwen,shuzi,kongge,qitazifu))
print(n)
print(t)
(这个思路很好。)
#题目14:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符输出的数并分别统计每一种类型的个数。
#输入:一行字符
#输出:各个类型个字符的个数
#计算;用不同的函数分别同济中文个数,英文个数,数字个数,空格个数,以及其他类别的个数
t=input('请输入一串字符:')
n=len(t)
zimu=0
kongge=0
shuzi=0
zhongwen=0
qita=0
for i in t:if '\u4e00' <= i <= '\u9fff':zhongwen=zhongwen+1elif i.isspace():#这里的函数ture,直接执行if的ture。(知识点)kongge=kongge+1elif i.isdigit():shuzi=shuzi+1elif i.isalpha():#这个是判断是否为字母的,就是中英文都算,所以放到后面,等中文的判断完了,不是中文,# 再接着判断,否则输出的英文个数会包括中文的个数。zimu=zimu+1else:qita=qita+1
print('英文个数为:%d,中文个数为:%d,数字个数为:%d,空格个数为%d,其他字符个数为%d'%(zimu,zhongwen,shuzi,kongge,qita))
用用到的python判断字符串是否是中文_刘延林 | 梦陆的博客-CSDN博客_python 判断字符串是否是中文def is_Chinese(word): for ch in word: if '\u4e00' <= ch <= '\u9fff': return True return Falseprint(is_Chinese("测试"))运行结果如图:https://blog.csdn.net/qq_32502511/article/details/82910465?ops_request_misc=&request_id=&biz_id=102&utm_term=Python%E5%88%A4%E6%96%AD%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E4%B8%BA%E4%B8%AD%E6%96%87&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-82910465.142%5Ev9%5Econtrol,157%5Ev4%5Econtrol&spm=1018.2226.3001.4187
Python判断字符串是否为数字_竹叶青郁的博客-CSDN博客_python判断字符串是否为数字str为字符串1、str.isalnum() 所有字符都是数字或者字母2、str.isalpha() 所有字符都是字母3、str.isdigit() 所有字符都是数字4、str.islower() 所有字符都是小写5、str.isupper() 所有字符都是大写6、str.istitle() 所有单词都是首字母大写7、str.isspace() 所有字符都是空白字符、\t、\n、\r...https://blog.csdn.net/weixin_40874592/article/details/84777146?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165042456816781683912577%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165042456816781683912577&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-2-84777146.142%5Ev9%5Econtrol,157%5Ev4%5Econtrol&utm_term=Python%E5%88%A4%E6%96%AD%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E4%B8%BA%E6%95%B0%E5%AD%97&spm=1018.2226.3001.4187这个是有判断字符是否为什么类型的语法。
答案:
#!/usr/bin/env python3
#先让其输入进行判断的字符串
InPut = input('输入任意字符:')
#列出四种类型的列表来盛放相应的字符
letters = []
spaces = []
digits = []
others = []
#这里用的是for循环
for i in iter(InPut):# 对输入的字符串进行判断if i.isalpha() == True: #为字母letters.append(i)elif i.isspace() == True: #为空字符就是空格spaces.append(i)elif i.isdigit() == True: #为数字digits.append(i) #为其他不识别的东西else:others.append(i)
#此处的输出方法有很多种,这里只是其中的一种
print('''
字母: {}, 个数: {};
空字符: {}, 个数: {};
数字: {}, 个数: {};
其他: {}, 个数: {}'''.format(letters, len(letters), spaces, len(spaces), digits, len(digits), others, len(others)))
题目15:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#题目15:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,
# 共经过多少米?第10次反弹多高?
#输入:无 输出:路程和第10次反弹的高度 计算:分开计算,第10次反弹的高度比较好计算,然后根据反弹的每次的高度来计算路程
t=100*(0.5**10)
print('第十次反弹的高度是%.15f米'%t)
n=100
m=100
for i in range(9):n=0.5*nm=n+m*2
print('路程是%.15f米'%m)
任意次反弹的。(精确度只在小数点后15 位)
#题目15:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,
# 共经过多少米?第10次反弹多高?
#输入:无 输出:路程和第10次反弹的高度 计算:分开计算,第10次反弹的高度比较好计算,然后根据反弹的每次的高度来计算路程
k=input('第几次反弹:')
k=eval(k)
t=100*(0.5**k)
print('第十次反弹的高度是%.15f米'%t)
n=100
m=100
for i in range(k-1):#for循环也可以用来直接循环想要的次数?这样可以吗?n=0.5*nm=n+m*2
print('路程是%.15f米'%m)
#题目15:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,
# 共经过多少米?第10次反弹多高?
#输入:无
#输出:第十次反弹的高度,还有一共的里程数。
#计算:设置一个变量计算每次的反弹的高度,然后叠加计算总的里程。
m=100
t=0
n=0
while t<10:m=m*0.5t=t+1n=n+m*2#第二次到第九次的帅被 应该减去第十次反弹的高度加上第一次的高度
n=n+100-100*(0.5**10)
print('第四次的高度为%f,一共的里程为%f'%(m,n))
这个是print 格式化输出的,帖子。
print()格式化输出_巧乐兹呀的博客-CSDN博客_print格式化
题目16:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。题目16:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
#几个数相加由键盘控制。
#输入:a的值,有几个数相加 输出:等式结果
#计算:首先 看有几个数相加,这个决定了有几项,最大的数有几位。
a=input('a的值为:')
t=input('有几个数相加:')
L=[]
t=int(t)
a=int(a)
m=a
s=0
for i in range(t):L.append(a)#这个会修改自身 ,所有不能去赋予变量。(即不可以L=L.append(a))a=a*10+m#这里不能是+a只能+m,因为这里是要加个位数,但是a已经改变不是个位数了,只能加一开始把个位数的a 赋值在的m。
#这里也是试运行了一下才改过来的。
for i in range(t):s=s+L[i]
print(s)#用了两个循环,一个确定a aa aaa aaa aaaaa..... 使得他们在一个列表中
#另一个把列表中每一个数相加。
#求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
#输入:a的值,还有加的次数
#输出:结果(带算式的结果)
#计算:for i in range(次数),
a=int(input('请输入a的值'))
t=int(input('请输入累加的次数'))
m=0
c=1
n=a
for i in range(1,(t+1)):#不能range(t),因为这里的i要用,是1到10。一开始用的range(t),结果错了。while c<i:n=n*10+nc=c+1#没有这个的话t大于1时就会一直循环,运行不出来。因为C一直小于2m=m+n
print('%d次%d的叠数相加的结果为:'%(t,a),m)
题目17:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
#题目17:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将
#剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
#输入: 输出:开始摘了多少个 计算:9次 一半减一 之后剩下一个
a=1
for i in range(9):a=(a+1)*2
print(a)
不爆栈的递归的方法
#题目17:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将
#剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
#输入: 输出:开始摘了多少个 计算:9次 一半减一 之后剩下一个
def taozi(n,product):#q其实这就是两个变量,怎么命名都行。(day,num) 也行。if n==9:return productreturn taozi(n+1,(product+1)*2)
print(taozi(0,1))
#题目17:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将
#剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
#输入;无
#输出:摘了的桃子
#计算:n=(n+1)*2
n=1
for i in range(9):n=(n+1)*2
print('摘了%d个桃子'%n)
题目18:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
#题目18:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。
#已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
#输入:无 输出:xyz abc 三个人的对应 计算:
for a in ['x','y','z']:for b in['x','y','z']:for c in ['x','y','z']:if a!='x' and c!='x' and c!='z':if a!=b and b!=c and a!=c:print('abc分别跟%s,%s,%s打'%(a,b,c))
##题目18:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。
#已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单
for a in ['x','y','z']:for b in['x','y','z']:for c in ['x','y','z']:if a!='x':if c!='x' and c!='z':if a!=b and a!=c and b!=c:#这一步很重要。print('abc分别和%c%c%c打'%(a,b,c))
题目19,输出以下图形
#题目19,输出以下图形
print(' *')
print(' ***')
print(' *****')
print('*******')
print(' *****')
print(' ***')
print(' *')
3:
##题目19:输出图形
for i in range(1,5):print(' '*(4-i),end='')print('*'*(2*i-1))
for i in range(1,4):print(' '*i,end='')print('*'*(2*(4-i)-1))
题目20:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
Python 中分数的使用。
python中如何运算分数_patrickpdx的博客-CSDN博客_python计算分数
#题目20:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
#输入:前多少项 输出:和 计算:递归函数,确定每项,再用一个空数组延长,求和。#递归函数不行 递归函数是由高到低停止的,或者到高的话有明显的可以预测的量,
#因为这个每一项不是可叠加的线性或者类似的增加
t=input('请输入第几项:')
t=int(t)
c=2
m=1
p=2
n=2
k=0
L=[2,1.5]
if t ==1:print('2/1')
elif t==2:print('7/2')
else:while n<t:n=n+1c=m+pm=pp=cd=p+mL.append(d/c)#print(c)#print('%d/%d'%(d,c))for i in L:k=k+iprint(k)
#题目20:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.
#输入 :
#输出:前20项之和
#计算:用之前的斐波那契数列分别构造分子分母,然后用Fraction函数构造成分数,然后求和。
from fractions import Fraction
L=[1]
t=1
a=1
b=2
c=0
while t<20:#用while不能用if 开始用了if导致只能输出长度为1的数列L.append(b)c=a+ba=bb=ct=t+1
M=[2]
t=1
a=2
b=3
c=0while t<20:#用while不能用if 开始用了if导致只能输出长度为1的数列M.append(b)c=a+ba=bb=ct=t+1
z=0
for i in range(20):print(Fraction(M[i],L[i]))z=z+Fraction(M[i],L[i])
print(z)
题目21:求1+2!+3!+...+20!的和。
#题目21:求1+2!+3!+...+20!的和。题目21:求1+2!+3!+...+20!的和。n=0def jiecheng(x,project):if x==1:return projectelse:return jiecheng(x-1,x*project)
for i in range(1,21):n=n+jiecheng(i,1)
print(n)
#题目:#题目21:求1+2!+3!+...+20!的和。题目21:求1+2!+3!+...+20!的和。
def jiecheng(n):if n==1:return 1return n*jiecheng(n-1)
t=0
for i in range(1,21):t=t+jiecheng(i)
print('阶乘的结果为:',t)
题目22:利用递归方法求5!。
#题目22:利用递归方法求5!。
t=input('阶乘:')
t=int(t)
n=1
def f(x,y):while x>1:y=y*xx =x-1return y
m=f(t,1)
print('结果为:',m)
#题目22:利用递归方法求5!。
def jiecheng(x,y):if x==1 :return yreturn jiecheng(x-1,y*x)
print('5的阶乘是:',jiecheng(5,1))
题目23:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
t=input('请输入五个字符:')
def n(x):m = len(x)if m==1:print(x)else:print(x[-1],end='')x=x[0:-1]#注意一定是[0:-1],一开始写的[1:-1],导致老是少输出前面的几项。return n(x)
n(t)
#出现了输入5个数,但是只反向输出3个数的情况。
#不是return n(x-1)算递归吗?
#题目22:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
#输入:输入5个字符
#输出:相反的顺序打印出来
#计算;递归函数
t=input('请输入5个字符:')
t=list(t)def daoxu(x,y):if len(x)==0:return yreturn daoxu(x[:-1],y+x[-1])#字符的增减可以直接用加号print(daoxu(t,''))
j=' '+'1+''2'
print(j)
题目24:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
#题目24:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。
# 问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?a=10
for b in range(200):for c in range(200):for d in range(200):for e in range(200):#所有变量要定义,就是要Bin range 多少,或者所有浮点数、整数等。对于变量至少要给定一个范围,不能直接给个变量。if b==a+2:if c==b+2:if d==c+2:if e==c+2:print(e)
#题目24:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。
# 问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
diyi=10for dier in range(200):#range()里的数字越大,运行出结果的时间就越久。for disan in range(200):for disi in range(200):for diwu in range(200):if dier==diyi+2 and disan==dier+2 and disi==disan+2 and diwu==disi+2:print(diwu)
题目25:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
#题目25:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字t=input('请输入数字')m=len(t)
print('这是%d位数'%m)
print(t[::-1])#直接用t就可以,不用eval函数
题目26:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#题目26:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#输入:五位数 输出:是回文数 不是回文数 计算:
t=input('请输入一个五位数:')
if t[0]==t[-1]:if t[1]==t[-2]:print('是回文数')else:print('不是回文数')
else:print('不是回文数')
#用了之前的倒叙的代码t=input('请输入一个不多于5位的正整数:')
print('正整数长度是:',len(t))def daoxu(x,y):if len(x)==0:return yreturn daoxu(x[:-1],y+x[-1])#字符的增减可以直接用加号if daoxu(t,'')==t:print('%s是一个回文数'%t)
else:print('%s不是一个回文数'%t)
更进一步,输入任何整数判断是否为回文数。
#题目26:一个数字,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#输入:数字数 输出:是回文数 不是回文数 计算:先判断就奇偶,判断几位数,然后根据奇偶不同给不同的相近的判定条件。
#这是一种新思路,相同的数的数量等于数字位数的一半,就是他有这么多相同的,也就是回文数。
t=input('输入一个数:')
m=len(t)
l=0
if m%2==0:for i in range(m//2):#len函数 的结果是int型,不能直接用float来一起计算。(0.5是float数)if t[i]==t[-i-1]:l=l+1if l==m//2:print('是回文数')else:print('不是回文数')
elif m%2==1:for i in range((m-1)//2):#range后面的的最后一个不包括,所以虽然最后一位要减一,但是在range里右象限自动不包括了,就相当于自动减了。if t[i]==t[-i-1]:l=l+1if l==(m-1)//2: print('是回文数')else:print('不是回文数')
#一开始,没注意range 函数不包括右象限,除了一位数,不管怎么运行都是“不是回文数”,因为比较前面和后面的数的时候,
# 都少比对了一对数,但是后面的数量是按所有的数量来算的所以数量对不上,就一直判定“不是回文数”。
问题:两个整数 不用整除,会是float数吗?
题目27:添加逗号分隔列表成字符串。
#题目27:添加逗号分隔列表成字符串。
#输入:列表 输出:用逗号分隔的字符串 计算:使用jion函数
t=['d','d','df','ds','da','dfa']
m='sep'.join(t)
print(m)
join函数的使用
python join()函数的用法_denise的博客-CSDN博客
#问题:将列表变成各元素以逗号分隔的字符串
t=['1','2','5','s','是的']#这里面只能是字符,不能是直接1234,要'1234'这样。
k=','.join(t)
print(k)
题目28:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母
#题目28:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
# 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母
#输入:星期几的第一个或者第二个字母, 输出:星期几 计算:判断语句先判断第一个字母,无法判断就第二个
#星期一:Monday,英文缩写Mon。星期二:Tuesday,星期三:Wednesday星期四:Thursday,英文缩写Thur。
# 星期五:Friday,英文缩写Fri。星期六:Saturday,英文缩写Sat。星期日:Sunday,英文缩写Sun。
n=input('请输入第一个字母:')
if n=='m':print('星期一')
elif n=='t':n=input('请输入第二个字母:')if n=='u':print('星期二')elif n=='h':print('星期四')
elif n=='w':print('星期三')
elif n=='f':print('星期五')
elif n=='s':n=input('请输入第二个字母:')if n=='a':print('星期六')elif n=='u':print('星期日')
#判断语句中 ,可以用变量是否等于字符串判定。是被允许的。
#题目28:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
#输入:星期几的前面的字母
#输出:星期几
#分析:Monday Tuesday Wednesday Thursday Friday Saturday Sunday
t=input('请输入首字母:')
if t=='M':#记得加冒号,因为这里的M是字母,不是变量。print('周一')
elif t=='W':print('周三')
elif t=='F':print('周五')
elif t == 'S':t=input('请输入第二个字母:')if t=='a':print('周六')else:print('周日')
elif t == 'T':t = input('请输入第二个字母:')if t=='u':print('周二')else:print('周四')
题目032:按相反的顺序输出列表的值。
L=list(range(9))#range 是 iterator,不是 iterable。即generation,不是list
print(L[::-1])
题目033:按逗号分隔列表。
题目033:按逗号分隔列表
L=['1','2','3']
print('L.'.join(L))
Python中的join()函数_Ejasmine的博客-CSDN博客_join()函数
这个没看完,可以看看。
有一个很有意思的思路,就是for 循环加 str 加join函数,加eval函数,的使用。
L=['1',2,3,4,5]
M=[]
for i in L:M.append(str(i))
print(M)
r='-'.join(M)
r=eval(r)
print(r)
题目036:求100之内的素数。
#题目036:求100之内的素数。
#输入:无
#输出;无
#计算:只能被自己和1整除,用%取余。
L=[]
for i in range(1,101):for j in range(2,i):if i%j==0:# print(i)L.append(i)break
for i in range(1,101):if i not in L:print(i)
题目037:对10个数进行排序
#题目037:对10个数进行排序
#输入;无
#输出:排序好的十个数
#计算:sorted
a=[1,5,3,4,9,8,1,3,4,7,]
a.sort()
print(a)b=sorted(a)
print(b)
#这两个上下结果是一样的,可以对比一下。
题目038:求一个3*3矩阵主对角线元素之和。
#题目038:求一个3*3矩阵主对角线元素之和。
#输入:无、
#输出:矩阵的迹
#计算:用trace
import numpy as np
a=np.random.randn(3,3)
b=a.trace()#记得括号,开始括号忘记打了b没有结果
print(a)
print(b)
#输入:无
#输出;插入到位置的排序好的列表
#计算;随机生成数组,排序,插入数据。
import numpy as np
L=np.random.random(6)
print(L)
L=sorted(L)
m=0.64126456
print(L)
for i in range(6):if m>=L[i] and m<=L[i+1]:L.insert(i+1,m)break
print(L)
、
题目042:学习使用auto定义变量的用法
num = 2
def autofunc():num=5print('internal num = %d'%num)
for i in range(9):num=num+1print('num=%d'%num)autofunc()#有一个问题,这个num放在哪个位置,局部变量和全局变量,里的Num不是一个变量,#但是名称相同放在不同的位置,调用的时候不是按名称识别吗?
题目044:两个3*3的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:
import numpy as np
np.random.seed(1)
a=np.random.random([3,3])#random 里面是列表,randn里面不用[],这个要主要。
print(a)
b=np.random.randn(3,3)
print(b)
c=a+b
print(c)
题目045:统计 1 到 100 之和。
#题目045:统计 1 到 100 之和。
t=0
for i in range(101):t=t+i
print(t)
题目046:求输入数字的平方,如果平方运算后小于 50 则退出。
#题目046:求输入数字的平方,如果平方运算后小于 50 则退出。
#输入:数字
#输出:平方,大于50 不输出
t=int(input('请输入数字:'))
m=t**2
if m<=50:print('%d的平方是%d'%(t,m))#if 语句中可以不写else。
题目047:两个变量值互换。
#两个变量的值互换
#输入:两个变量
#输出:两个变量的值呼唤
a=float(input('请输入a:'))
b=float(input('请输入b:'))
c=a
a=b
b=c
print('a的值是%f'%a)
print('b的值是%f'%b)
一直放在最下面,方便找题。
两万多字诠释python最经典基础算法之100题【内含思路、程序和答案】【python初学者必备】_zhulin1028的博客-CSDN博客_python基础算法题
这篇关于python练习一百例 笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!