您当前的位置: 首页 >  Python

嗨学编程

暂无认证

  • 0浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

花了一周精心整理出来的100道Python基础题,学完就彻底入门了!

嗨学编程 发布时间:2021-09-26 23:03:56 ,浏览量:0

这不每天晚上下班了无聊,就给大家整理出来了一百道Python必刷题,基本上都做的出来的话,基础彻底没问题了~ 在这里插入图片描述 大致涉及到的知识点有: 基础语法 变量类型 运算符 条件判断 循环 字符串 列表 元组 字典 函数 异常 内置函数 面向对象 正则表达式 异常处理 … 在开始之前,给大家推送一个群,需要啥资料代码,包括2021年最新Python视频教程、电子书,都可以免费领取,有学习问题也会有大佬不定期解答! 点我立即加群

在这里插入图片描述

OK,我们开始今天的正题吧

第1题

问题:编写一个程序,找到2000年至3200年(包括在内)中所有可被7整除但不能被5整除的所有数字,得到的数字按逗号分隔,打印在一行上。

提示:考虑使用range(begin, end)方法

l=[]
for i in range(2000, 3201):
    if (i%7 == 0) and (i%5 != 0):
        l.append(str(i))
print (','.join(l))

第2题

问题:使用给定的整数n,编写程序生成一个包含(i, i×i)的字典,该字典包含从1到n之间的整数(两者都包含),然后打印字典。

假设向程序提供以下输入:8 则输出为:{1:1,2:4,3:9,4:16,5:25,6:36,,7:49,8:64}

提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。考虑使用dict类型()

print('请输入一个数字:')
n=int(input())
d=dict()
for i in range(1,n+1):
    d[i]=i*i
print(d)

第3题

问题:编写一个可以计算给定数阶乘的程序,结果以逗号分隔,打印在一行上;

假设向程序输入8,则输出40320;

提示:在为问题提供输入数据的情况下,假设它是控制台输入。

def fact(x):
    if x == 0:
        return 1
    return x * fact(x - 1)
print('请输入一个数字:')
x=int(input())
print (fact(x))

第4题

问题:编写一个程序,该程序接收控制台以逗号分隔的数字序列,并生成包含每个数字的列表和元组;

假设,向程序提供以下输入:34岁,67年,55岁,33岁,12日,98年; 则输出为:[‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’] (‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’)

提示:在为问题提供输入数据的情况下,应该假设它是控制台输入,同时方法可以将列表转换为元组;

import re
print('请输入一组数字:')
values=input()
l=values.split(",")
k=re.findall(r'[0-9]+',values)
t=tuple(k)
print(k)
prin(t)

第5题

问题:定义一个至少有两个方法的类: 一、getString:从控制台输入获取字符串;二、printString:打印大写母的字符串,并写出简单的测试函数来测试类方法。

提示:使用init方法构造一些参数

class InputOutString(object):
    def __init__(self):
        self.s = ""
    def getString(self):
        print('请输入字符串:')
        self.s = input()
    def printString(self):
        print (self.s.upper())
strObj = InputOutString()
strObj.getString()
strObj.printString()

第6题

问题:编写一个程序,根据给定的公式计算并打印值:[公式]。其中,假设C=50。H=30。D是一个变量,它的值应该以逗号分隔的序列输入到程序中。

程序的输入序列为(以逗号分隔):100,150,180; 则程序输出为:18,22,24;

提示:如果输出是小数,则应四舍五入到其最近的值(例输出是26.0,则应打印为26)。

import math
c=50
h=30
value = []
print('请输入一组数字:')
items=[x for x in input().split(',')]
for d in items:
    value.append(str(int(round(math.sqrt(2*c*float(d)/h)))))
print (','.join(value))

第7题

问题:编写一个程序,X,Y作为输入,生成一个二维数组,数组的第i行和第j列的元素值应该是i×j。 注意:i= 0,1 . .,X - 1; j = 0, 1, Y-1。

假设,程序输入3, 5;则程序输出为:[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8]];

提示:如果要为问题提供输入数据,应该假设它是一个控制台输入,以逗号分隔。

print('请输入两个数字:')
input_str = input()
dimensions=[int(x) for x in input_str.split(',')]
rowNum=dimensions[0]
colNum=dimensions[1]
multilist = [[0 for col in range(colNum)] for row in range(rowNum)]
for row in range(rowNum):
    for col in range(colNum):
        multilist[row][col]= row*col
print (multilist)

第8题

问题:编写一个程序,以逗号分隔的单词序列作为输入,按照字母顺序对每个单词进行排序,并通过逗号分隔的序列来打印单词。

假设向程序输入:without,hello,bag,world; 则输出为:bag,hello,without,world;

提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。

items=[x for x in input().split(',')]
items.sort()
print (','.join(items))

第9题

问题:编写一个程序,接收一行序列作为输入,并在将句子中的所有字符大写后打印行。

假设向程序依次输入:Hello world;Practice makes perfect; 则输出为:HELLO WORLD;PRACTICE MAKES PERFECT;

提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。

lines = []
while True:
    s = input()
    if s:
        lines.append(s.upper())
    else:
        break;
for sentence in lines:
    print(sentence)

第10题

问题:编写一个程序,以一系列空格分隔的单词作为输入,并在删除所有重复的单词后,按字母顺序排序后打印这些单词。

假设向程序输入:hello world and practice makes perfect and hello world again 则输出为:again and hello makes perfect practice world

提示:我们使用set容器自动删除重复的数据,然后使用sort()对数据进行排序。

print('请输入一组字符串:')
s = input()
words = [word for word in s.split(" ")]
print (" ".join(sorted(list(set(words)))))

第11题

问题:编写一个程序,接收一系列以逗号分隔的4位二进制数作为输入,然后检查它们是否可被5整除, 可被5整除的数字将以逗号分隔的顺序打印。

例:0100,0011,1010,1001 那么输出应该是:1010

提示:如果输入数据被提供给问题,则应该假定它是控制台输入。

value = []
print('请输入逗号分隔的4位二进制数:')
items=[x for x in input().split(',')]
for p in items:
    intp = int(p, 2)
    # print(intp)
    if not intp%5:
        value.append(p)
print (','.join(value)

第12题

问题:编写一个程序,找到1000到3000之间并且所有位数均为偶数的所有数字,比如2000,2002等;获得的数字都以逗号分隔的顺序,打印在一行上。

提示:如果输入数据被提供给问题,则应该假定它是控制台输入。

values = []
for i in range(1000, 3001):
    s = str(i)
    if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0):
        values.append(s)
print (",".join(values))

第13题

问题:编写一个接受句子并计算字母和数字的程序。

假设程序输入:Hello world! 123 则输出应该是:字母10 数字3

提示:如果输入数据被提供给问题,则应该假定它是控制台输入。

print('请输入:')
s = input()
d={"DIGITS":0, "LETTERS":0}
for c in s:
    if c.isdigit():
        d["DIGITS"]+=1
    elif c.isalpha():
        d["LETTERS"]+=1
    else:
        pass
print ("字母", d["LETTERS"])
print ("数字", d["DIGITS"])

第14题

问题:编写一个接收句子的程序,并计算大写字母和小写字母的数量。

假设为程序提供了以下输入:Hello world! 则输出应该是:UPPER CASE 1;LOWER CASE 9

提示:如果输入数据被提供给问题,则应该假定它是控制台输入。

print('请输入:')
s = input()
d={"UPPER CASE":0, "LOWER CASE":0}
for c in s:
    if c.isupper():
        d["UPPER CASE"]+=1
    elif c.islower():
        d["LOWER CASE"]+=1
    else:
        pass
print ("UPPER CASE", d["UPPER CASE"])
print ("LOWER CASE", d["LOWER CASE"])

第15题

问题:编写一个程序,计算a + aa + aaa + aaaa的值,给定的数字作为a的值。

假设为程序提供了以下输入:9;输出应该是:11106

提示:如果输入数据被提供给问题,则应该假定它是控制台输入。

print('请输入一个数字:')
a = input()
n1 = int( "%s" % a )
n2 = int( "%s%s" % (a,a) )
n3 = int( "%s%s%s" % (a,a,a) )
n4 = int( "%s%s%s%s" % (a,a,a,a) )
print (n1+n2+n3+n4)

第16题

问题:使用列表推导输出列表中的每个奇数,该列表由一系列逗号分隔的数字输入。

假设程序输入:1,2,3,4,5,6,7,8,9 输出应该是:1,3,5,7,9

print("输入:")
values = input()
numbers = [x for x in values.split(",") if int(x)%2!=0]
print (",".join(numbers))

第17题

问题:编写一个程序,根据控制台输入的事务日志计算银行帐户的净金额。 事务日志格式如下所示: D 100 W 200 D表示存款,而W表示提款。

假设向程序依次输入:D 300;D 300;W 200;D 100; 则输出应该为:500

提示:如果输入数据被提供给问题,则应该假定它是控制台输入。

netAmount = 0
while True:
    print("请输入:")
    s = input()
    if not s:
        break
    values = s.split(" ")
    operation = values[0]
    amount = int(values[1])
    if operation=="D":
        netAmount+=amount
    elif operation=="W":
        netAmount-=amount
    else:
        pass
print (netAmount)

第18题

问题:网站要求用户输入用户名和密码进行注册。编写程序以检查用户输入的密码有效性。 以下是检查密码的标准: 1 [a-z]之间至少有1个字母 2 [0-9]之间至少有1个数字 3 [A-Z]之间至少有一个字母 4 [$#@]中至少有1个字符 5 最短交易密码长度:6 6 交易密码的最大长度:12 您的程序接收一系列逗号分隔的密码,并将根据上述标准进行检查,将打印符合条件的密码,每个密码用逗号分隔。

例:如果以下密码作为程序的输入:ABd1234@1,a F1#,2w3E*,2We3345 则程序的输出应该是:ABd1234@1

import re
value = []
print("请输入:")
items=[x for x in input().split(',')]
for p in items:
    if len(p)12:
        continue
    else:
        pass
    if not re.search("[a-z]",p):
        continue
    elif not re.search("[0-9]",p):
        continue
    elif not re.search("[A-Z]",p):
        continue
    elif not re.search("[$#@]",p):
        continue
    elif re.search("\s",p):
        continue
    else:
        pass
    value.append(p)
print (",".join(value))

第19题

问题:您需要编写一个程序,按升序对(名称,年龄,高度)元组进行排序,其中name是字符串,age和height是数字, 元组由控制台输入。 排序标准是: 1:根据名称排序; 2:然后根据年龄排序; 3:然后按分数排序。 优先级是name > age > 得分。

如果给出以下元组作为程序的输入: Tom,19,80;John,20,90;Jony,17,91;Jony,17,93;Json,21,85

然后,程序的输出应该是: [(‘John’,‘20’,‘90’),(‘Jony’,‘17’,‘91’),(‘Jony’,‘17’,‘93’),(‘Json’,'21 ',‘85’),(‘Tom’,‘19’,‘80’)]

提示:使用itemgetter来启用多个排序键。

from operator import itemgetter, attrgetter
l = []
print("请输入:")
while True:
    s = input()
    if not s:
        break
    l.append(tuple(s.split(",")))
print (sorted(l, key=itemgetter(0,1,2)))

第20题

问题:使用生成器定义一个类,该生成器可以在给定范围0和n之间迭代可被7整除的数字。

提示:考虑使用yield。

def putNumbers(n):
    i = 0
    while i0和F(0)=1时,F(n)=F(n-1)+100通过控制台输入一个给定的n (n>0)。

示例:如果下面的n作为程序的输入:5, 那么,程序的输出应该是:500;

提示:我们可以在Python中定义递归函数。

def f(n):
    if n==0:
        return 0
    else:
        return f(n-1)+100
n=int(input())
print(f(n))

第66题

问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序,在控制台输入给定n的情况下计算f(n)的值。

示例:如果下面的n作为程序的输入:7; 那么,程序的输出应该是:13;

提示:我们可以在Python中定义递归函数。

def f(n):
    if n == 0: return 0
    elif n == 1: return 1
    else: return f(n-1)+f(n-2)
n=int(input())
print(f(n))

第67题

问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序使用列表理解输出逗号分隔的Fibonacci序列,并通过控制台输入给定的n。

示例:如果下面的n作为程序的输入:7; 那么,程序的输出应该是:0,1,1,2,3,5,8,13;

提示:我们可以在Python中定义递归函数。使用列表理解从现有列表生成列表。使用string.join()连接字符串列表。

def f(n):
    if n == 0: return 0
    elif n == 1: return 1
    else: return f(n-1)+f(n-2)
n=int(input())
values = [str(f(x)) for x in range(0, n+1)]
print(",".join(values))

第68题

问题:请使用generator编写一个程序,当n由控制台输入时,以逗号分隔的形式输出0和n之间的偶数;

示例:如果下面的n作为程序的输入10; 那么,程序的输出应该是:0,2,4,6,8,10

提示:使用yield生成生成器中的下一个值。

def EvenGenerator(n):
    i=0
    while i=bottom and index==-1:
        mid = int(math.floor((top+bottom)/2.0))
        if li[mid]==element:
            index = mid
        elif li[mid]>element:
            top = mid-1
        else:
            bottom = mid+1
    return index
li=[2,5,7,9,11,17,222]
print(bin_search(li,11))
print(bin_search(li,12))

第73题

问题:随机生成1,100内的一个整数;

提示:random.randint()

import random
random.randint(a=1,b=100)

第74题

问题:请使用Python math模块生成一个值在10到100之间的随机浮点数。

提示:使用random.random()在[0,1]中生成一个随机浮点数。

import random
print(random.random()*100)

第75题

问题:请使用Python math模块生成一个值在5到95之间的随机浮点数。

提示:使用random.random()在[0,1]中生成一个随机浮点数。

import random
print(random.random()*100-5)

第76题

问题:请编写一个程序输出O和10之间的随机偶数使用随机模块和列表理解。

提示:对列表中的随机元素使用random.choice()。

import random
print(random.choice([i for i in range(11) if i%2==0]))

第77题

问题:请编写一个程序输出一个随机数,它可以被5和7整除,在0和10之间,使用随机模块和列表理解。

提示:对列表中的随机元素使用random.choice()。

import random
print(random.choice([i for i in range(201) if i%5==0 and i%7==0]))

第78题

问题:请编写一个程序生成一个包含100到200之间的5个随机数的列表。

提示:使用random.sample()生成一个随机值列表。

import random
print(random.sample(range(100), 5))

第79题

问题:请编写一个程序随机生成一个列表,其中包含100到200之间的5个偶数。

提示:使用random.sample()生成一个随机值列表。

import random
print(random.sample([i for i in range(100,201) if i%2==0], 5))

第80题

问题:请编写一个程序,随机生成一个列表,从1到1000(含1000),有5个数字,可以被5和7整除。

提示:使用random.sample()生成一个随机值列表。

import random
print(random.sample([i for i in range(1,1001) if i%5==0 and i%7==0], 5))

第81题

问题:请写一个程序来随机打印一个7到15之间的整数(包括15)。

提示:使用random.randrange()到一个给定范围内的随机整数。

import random
print(random.randrange(7,16))

第82题

问题:请编写一个程序来压缩和解压字符串"hello world!hello world!hello world!hello world!"。

提示:使用zlib.compress()和zlib.decompress()来压缩和解压缩字符串。

import zlib
s = b'hello world!hello world!hello world!hello world!'
t = zlib.compress(s)
print(t)
print(zlib.decompress(t))

第83题

问题:请编写一个程序打印100次“1+1”执行的运行时间。

提示:使用timeit()函数测量运行时间。

from timeit import Timer
t = Timer("for i in range(100):1+1")
print(t.timeit())

第84题

问题:请编写一个程序洗牌和打印列表[3,6,7,8]。

提示:使用shuffle()函数洗牌列表。

from random import shuffle
li = [3,6,7,8]
shuffle(li)
print(li)

第85题

问题:请编写一个程序洗牌和打印列表[3,6,7,8]。

提示:使用shuffle()函数洗牌列表。

from random import shuffle
li = [3,6,7,8]
shuffle(li)
print(li)

第86题

问题:请编写一个程序,生成主语在 [“I”, “You”],动词在[“Play”, “Love”]中,对象在[“Hockey”,“Football”]中的所有句子.

提示:使用list[index]表示法从列表中获取元素。

subjects=["I", "You"]
verbs=["Play", "Love"]
objects=["Hockey","Football"]
for i in range(len(subjects)):
    for j in range(len(verbs)):
        for k in range(len(objects)):
            sentence = "%s %s %s." % (subjects[i], verbs[j], objects[k])
            print(sentence)

第87题

问题:请写一个程序打印列表,删除后删除偶数[5,6,77,45,22,12,24]。

提示:使用列表理解从列表中删除一组元素。

li = [5,6,77,45,22,12,24]
li = [x for x in li if x%2!=0]
print(li)

第88题

问题:使用列表理解,请编写程序,删除[12,24,35,70,88,120,155]中可被5和7整除的删除数后,打印列表。

提示:使用列表理解从列表中删除一组元素。

li = [12,24,35,70,88,120,155]
li = [x for x in li if x%5!=0 and x%7!=0]
print(li)

第89题

问题:使用列表理解法,请编写一个程序,去掉[12,24,35,70,88,120,155]中的第0,2,4,6位置上的元素后打印列表。

提示:使用列表理解从列表中删除一组元素。使用enumerate()来获取(索引,值)元组。

li = [12,24,35,70,88,120,155]
li = [x for (i,x) in enumerate(li) if i%2!=0]
print(li)

第90题

问题:使用列表理解,编写一个程序生成一个358三维数组,每个元素为0。

提示:使用列表理解来创建数组。

array = [[ [0 for col in range(8)] for col in range(5)] for row in range(3)]
print(array)

第91题

问题:利用列表理解,请编写一个程序,去掉[12,24,35,70,88,120,155]中的第0,第4,第5个数字后,将列表打印出来。

提示:使用列表理解从列表中删除一组元素。使用enumerate()来获取(index, value)元组。

li = [12,24,35,70,88,120,155]
li = [x for (i,x) in enumerate(li) if i not in (0,4,5)]
print(li)

第92题

问题:通过使用列表理解,请编写一个程序,在[12,24,35,24,88,120,155]中删除值24后打印列表。

提示:使用列表的remove方法删除一个值。

li = [12,24,35,24,88,120,155]
li = [x for x in li if x!=24]
print(li)

第93题

问题:对于两个已知链表[1,3,6,78,35,55]和[12,24,35,24,88,120,155],编写一个程序来生成一个元素为上述两个链表交集的链表。

提示:使用set()和"&="进行集合相交操作。

set1=set([1,3,6,78,35,55])
set2=set([12,24,35,24,88,120,155])
set1 &= set2
li=list(set1)
print(li)

第94题

问题:对于给定的列表[12,24,35,24,88,120,155,88,120,155],编写一个程序来打印这个列表-删除所有重复的值与原始顺序保留。

提示:使用set()来存储一些没有重复的值。

def removeDuplicate( li ):
    newli=[]
    seen = set()
    for item in li:
        if item not in seen:
            seen.add( item )
            newli.append(item)
    return newli
li=[12,24,35,24,88,120,155,88,120,155]
print(removeDuplicate(li))

第95题

问题:定义一个类Person和它的两个子类:Male和Female。所有的类都有一个方法“getGender”,它可以打印“Male”为男性类,“Female”为女性类。

提示:使用子类(Parentclass)来定义子类。

class Person(object):
    def getGender( self ):
        return "Unknown"
class Male( Person ):
    def getGender( self ):
        return "Male"
class Female( Person ):
    def getGender( self ):
        return "Female"
aMale = Male()
aFemale= Female()
print(aMale.getGender())
print(aFemale.getGender())

第96题

问题:请编写一个程序,计算并打印由控制台输入的字符串中的每个字符的数量。

示例:如果下面的字符串作为程序的输入:abcdefgab; 那么,程序的输出应该是:a,2 c,2 b,2 e,1 d,1 g,1 f,1;

提示:使用dict存储键/值对。使用dict.get()方法查找具有默认值的键。

dic = {}
s=input()
for s in s:
    dic[s] = dic.get(s,0)+1
print('\n'.join(['%s,%s' % (k, v) for k, v in dic.items()]))

第97题

问题:请编写一个程序,从控制台接收一个字符串,并以相反的顺序打印出来。

示例:如果下面的字符串作为程序的输入:rise to vote sir; 那么,程序的输出应该是:ris etov ot esir;

提示:使用list[::-1]以相反的顺序迭代一个列表。

s=input()
s = s[::-1]
print(s)

第98题

问题:请编写一个程序,从控制台接收一个字符串,并打印具有偶数索引的字符;

示例:如果下面的字符串作为程序的输入:H1e2l3l4o5w6o7r8l9d 那么,程序的输出应该是:Helloworld;

提示:使用list[:2]来迭代第2步中的列表。

s=input()
s = s[::2]
print(s)

第99题

问题:请写一个程序,打印[1,2,3]的所有排列;

提示:使用itertools.permutations)得到list的排列。

import itertools
print(list(itertools.permutations([1,2,3])))

第100题

问题:写一个程序来解决一个中国古代的经典难题:我们数农场里的鸡和兔子中有35个头和94条腿。我们有多少只兔子和多少只鸡?

提示:使用for循环来迭代所有可能的解决方案。

def solve(numheads,numlegs):
    ns='No solutions!'
    for i in range(numheads+1):
        j=numheads-i
        if 2*i+4*j==numlegs:
            return i,j
    return ns,ns

numheads=35
numlegs=94
solutions=solve(numheads,numlegs)
print(solutions)

兄弟们有看完的没有,确实有点多,点个收藏慢慢看呗~

在这里插入图片描述

关注
打赏
1663681728
查看更多评论
0.1533s