Python零基础编程【1-25】题

众所周知,Python 是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,坚持「极简主义」。Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发、PC 软件开发、Linux 运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python 都能胜任。

本专栏主要涉及到100道Python零基础编程题,大部分题型翻译于Github上的100+ Python challenging programming exercises,如果小伙伴对于英语没有阅读障碍,可以去Github上阅读。专栏共有100题,分为四章,每章25道题;本篇博客为Python零基础编程的第一篇【1-25】;好了,废话不多说,开始展开;


和鲸社区链接Python零基础100题,无忌,让为师看看你还记得多少

和鲸社区聚集了大量的数据爱好者和数据从业者,社区内有很多优质的数据分析Python项目,我也是在里面学到很多数据相关的知识呀,真的是受益良多,对数据感兴趣的小伙伴可以去玩一玩,与其他小伙伴一起学习、交流、参加训练营以及参加比赛等,探索数据的新世界,快来跟我一起加入【和鲸社区】把!


第一篇:Python零基础编程【1-25】题

第二篇:Python零基础编程【26-50】题

第三篇:Python零基础编程【51-75】题

第四篇:Python零基础编程【76-100】题


第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题

问题:编写一个可以计算给定数阶乘的程序,结果以逗号分隔,打印在一行上;
假设向程序输入8,则输出40320;

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

第3题

问题:使用给定的整数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)

第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)
print (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题

问题:编写一个程序,根据给定的公式计算并打印值:Q=\sqrt{[(2*C*D)/H]}。其中,假设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)<6 or 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 i<n:
        j=i
        i=i+1
        if j%7==0:
            yield j
for i in putNumbers(100):
    print (i)

第21题

问题:机器人从原点(0,0)开始在平面中移动,机器人可以通过给定的步骤向上,向下,向左和向右移动。
机器人运动的痕迹如下所示:
UP 5;DOWN 3;LETF 3;RIGHT 2;方向之后的数字是步骤。

请编写一个程序,计算一系列运动和原点之后距当前位置的距离。如果距离是浮点数,则只打印最接近的整数。
例:如果程序输入:UP 5;DOWN 3;LETF 3;RIGHT 2;
则程序的输出应该是:2;

import math
pos = [0,0]
print("请输入:")
while True:
    s = input()
    if not s:
        break
    movement = s.split(" ")
    direction = movement[0]
    steps = int(movement[1])
    if direction=="UP":
        pos[0]+=steps
    elif direction=="DOWN":
        pos[0]-=steps
    elif direction=="LEFT":
        pos[1]-=steps
    elif direction=="RIGHT":
        pos[1]+=steps
    else:
        pass
print (int(round(math.sqrt(pos[1]**2+pos[0]**2))))

第22题

问题:编写一个程序,来计算每个单词出现的频率,按字母顺序对键进行排序后输出。
假设程序输入:
New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.
则输出应该是:
2:2
3.:1
3?:1
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1

freq = {}   # frequency of words in text
print("请输入:")
line = input()
for word in line.split():
    freq[word] = freq.get(word,0)+1
words = sorted(freq.keys())  #按key值对字典排序
for w in words:
    print ("%s:%d" % (w,freq[w]))

第23题

问题:写一个可以计算数字平方值的方法。
提示:使用**运算符;

def square(num):
    return num ** 2
print(square(2))
print(square(3))

第24题

问题:Python有许多内置函数,如果不知道如何使用它,可以在线阅读文档或查找一些书籍。请编写一个程序来打印一些Python内置函数文档,例如abs(),int(),input(),并为您自己的功能添加文档;
提示:内置文档方法是__doc__;

print(abs.__doc__)
print(int.__doc__)
print(input.__doc__)
def square(num):
    '''Return the square value of the input number.
    The input number must be integer.
    '''
    return num ** 2
print(square(2))
print(square.__doc__)

第25题

问题:定义一个类,它具有类参数并具有相同的实例参数。
提示:定义一个实例参数,需要在__init__方法中添加它,您可以使用构造参数初始化对象,也可以稍后设置该值;

class Person:
    # Define the class parameter "name"
    name = "Person"
    def __init__(self, name=None):
        # self.name is the instance parameter
        self.name = name
jeffrey = Person("Jeffrey")
print("%s name is %s" % (Person.name, jeffrey.name))
nico = Person()
nico.name = "Nico"
print("%s name is %s" % (Person.name, nico.name))

好了,到这里为止,Python零基础编程100题其中的前25题已经结束了,小伙伴们好好练习,先自己思考思考,不会做的情况下在看答案哦,这样才能够提高的更快!如果哪里有疑问的地方,欢迎在评论区留言,我会不断完善的!

                      来都来了,确定不留下点什么嘛,嘻嘻~

                                     

 

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数分小白龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值