返回顶部
首页 > 资讯 > 后端开发 > Python >Python基础练习100题 ( 11
  • 708
分享到

Python基础练习100题 ( 11

基础Python 2023-01-31 07:01:54 708人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

上一期和大家分享了前10道题,今天继续来刷11~20 Question 11: Write a program which accepts a sequence of comma separated 4 digit binary nu

上一期和大家分享了前10道题,今天继续来刷11~20

Question 11:

Write a program which accepts a sequence of comma separated 4 digit binary numbers as its input and then check whether they are divisible by 5 or not. The numbers that are divisible by 5 are to be printed in a comma separated sequence.

Example:

0100,0011,1010,1001
Then the output should be:
1010
Notes: Assume the data is input by console.

解法一

def check(x):                   # check function returns true if divisible by 5
    return int(x,2)%5 == 0      # int(x,b) takes x as string and b as base from which
                                # it will be converted to decimal
data = input().split(',')

data = list(filter(check,data)) # in filter(func,object) function, elements are picked from 'data' if found True by 'check' function
print(",".join(data))

解法二

value = []
items=[int(x) for x in input().split(',')]
result = " ".join(str(x) for x in items if x %5==0 )
print(",".join(result))

解法三

data = input().split(',')
data = list(filter(lambda i:int(i,2)%5==0,data))   
print(",".join(data))

Question 12:

Write a program, which will find all such numbers between 1000 and 3000 (both included) such that each digit of the number is an even number.The numbers obtained should be printed in a comma-separated sequence on a single line.

解法一

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))

解法二

lst = []

for i in range(1000,3001):
    flag = 1
    for j in str(i):          # every integer number i is converted into string
        if ord(j)%2 != 0:     # ord returns ASCII value and j is every digit of i
            flag = 0          # flag becomes zero if any odd digit found
    if flag == 1:
        lst.append(str(i))    # i is stored in list as string

print(",".join(lst))  

解法三

def check(element):
    return all(ord(i)%2 == 0 for i in element)  # all returns True if all digits i is even in element

lst = [str(i) for i in range(1000,3001)]        # creates list of all given numbers with string data type
lst = list(filter(check,lst))                   # filter removes element from list if check condition fails
print(",".join(lst))

解法四

lst = [str(i) for i in range(1000,3001)]
lst = list(filter(lambda i:all(ord(j)%2 == 0 for j in i),lst ))   # using lambda to define function inside filter function
print(",".join(lst))

Question 13:

Write a program that accepts a sentence and calculate the number of letters and digits.

Suppose the following input is supplied to the program:

hello world! 123
Then, the output should be:
LETTERS 10
DIGITS 3

解法一

text_input = input()

d={"DIGITS":0, "LETTERS":0,'SPACE':0}
d['DIGITS']= sum(c.isdigit() for c in text_input)
d['LETTERS']= sum(c.isalpha() for c in text_input)
d['SPACE']  = sum(c.isspace() for c in text_input)

for k,v in d.items():
    print(k,v)

解法二

Word = input()
letter,digit = 0,0

for i in word:
    if ('a'<=i and i<='z') or ('A'<=i and i<='Z'):
        letter+=1
    if '0'<=i and i<='9':
        digit+=1

print("LETTERS {0}\nDIGITS {1}".fORMat(letter,digit))

解法三

word = input()
letter,digit = 0,0

for i in word:
    letter+=i.isalpha()         # returns True if alphabet
    digit+=i.isnumeric()        # returns True if numeric

print("LETTERS %d\nDIGITS %d"%(letter,digit))       # two different types of formating method is shown in both solution

Question 14:

Write a program that accepts a sentence and calculate the number of upper case letters and lower case letters.

Suppose the following input is supplied to the program:

Hello world!
Then, the output should be:
UPPER CASE 1
LOWER CASE 9

解法一

word = input()
upper,lower = 0,0

for i in word:
    if 'a'<=i and i<='z' :
        lower+=1
    if 'A'<=i and i<='Z':
        upper+=1

print("UPPER CASE {0}\nLOWER CASE {1}".format(upper,lower))

解法二



text_input = input()
d={"UPPER CASE":0, "LOWER CASE":0}
for c in text_input:
    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"])

解法三


word = input()
upper = sum(1 for i in word if i.isupper())         
lower = sum(1 for i in word if i.islower())

print("UPPER CASE {0}\nLOWER CASE {1}".format(upper,lower))

Question 15:

Write a program that computes the value of a+aa+aaa+aaaa with a given digit as the value of a.

Suppose the following input is supplied to the program:

9
Then, the output should be:
11106

解法一

a = input()
total,tmp = 0,str()        # initialing an integer and empty string

for i in range(4):
    tmp+=a               # concatenating 'a' to 'tmp'
    total+=int(tmp)      # converting string type to integer type

print(total)

解法二

a = input()
total = int(a) + int(2*a) + int(3*a) + int(4*a)  # N*a=Na, for example  a="23", 2*a="2323",3*a="232323"
print(total)

Question 16:

Use a list comprehension to square each odd number in a list. The list is input by a sequence of comma-separated numbers.
Suppose the following input is supplied to the program:
1,2,3,4,5,6,7,8,9
Then, the output should be:
1,3,5,7,9

解法一

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

Question 17:

Write a program that computes the net amount of a bank account based a transaction log from console input. The transaction log format is shown as following:
D 100
W 200
  • D means deposit while W means withdrawal.
Suppose the following input is supplied to the program:
D 300
D 300
W 200
D 100
Then, the output should be:
500

解法一



netAmount = 0
while True:
    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)

解法二

total = 0
while True:
    s = input().split()
    if not s:            # break if the string is empty
        break
    cm,num = map(str,s)  

    if cm=='D':
        total+=int(num)
    if cm=='W':
        total-=int(num)

print(total)

Question 18:

A WEBsite requires the users to input username and password to reGISter. Write a program to check the validity of password input by users.

Following are the criteria for checking the password:

  • At least 1 letter between [a-z]
  • At least 1 number between [0-9]
  • At least 1 letter between [A-Z]
  • At least 1 character from [$#@]
  • Minimum length of transaction password: 6
  • Maximum length of transaction password: 12
Your program should accept a sequence of comma separated passwords and will check them according to the above criteria. Passwords that match the criteria are to be printed, each separated by a comma.

Example

If the following passwords are given as input to the program:

ABd1234@1,a F1#,2w3E*,2We3345
Then, the output of the program should be:
ABd1234@1

解法一

import re

value = []
items=[x for x in input().split(',')]
for p in items: 
    if (len(p)<6 or len(p)>12):
        break
    elif not re.search("[a-z]",p):
        break
    elif not re.search("[0-9]",p):
        break
    elif not re.search("[A-Z]",p):
        break
    elif not re.search("[$#@]",p):
        break
    elif re.search("\s",p):
        break
    else:
        value.append(p)
        break

print (",".join(value))

解法二

def is_low(x):       # Returns True  if the string has a lowercase
    for i in x:
        if 'a'<=i and i<='z':
            return True
    return  False

def is_up(x):       # Returns True  if the string has a uppercase
    for i in x:
        if 'A'<= i and i<='Z':
            return True
    return  False

def is_num(x):          # Returns True  if the string has a numeric digit
    for i in x:
        if '0'<=i and i<='9':
            return True
    return  False

def is_other(x):       # Returns True if the string has any "$#@"
    for i in x:
        if i=='$' or i=='#' or i=='@':
            return True
    return False

s = input().split(',')            
lst = []

for i in s:
    length = len(i)
    if 6 <= length and length <= 12 and is_low(i) and is_up(i) and is_num(i) and is_other(i):   #Checks if all the requirments are fulfilled
        lst.append(i)

print(",".join(lst))

解法三

def check(x):
    cnt = (6<=len(x) and len(x)<=12)
    for i in x:
        if i.isupper():
            cnt+=1
            break
    for i in x:
        if i.islower():
            cnt+=1
            break
    for i in x:
        if i.isnumeric():
            cnt+=1
            break
    for i in x:
        if i=='@' or i=='#'or i=='$':
            cnt+=1
            break
    return cnt == 5               # counting if total 5 all conditions are fulfilled then returns True

s = input().split(',')
lst = filter(check,s)             # Filter function pick the words from s, those returns True by check() function
print(",".join(lst))

解法四

import  re

s = input().split(',')
lst = []

for i in s:
    cnt = 0
    cnt+=(6<=len(i) and len(i)<=12)
    cnt+=bool(re.search("[a-z]",i))      # here re module includes a function re.search() which returns the object information
    cnt+=bool(re.search("[A-Z]",i))      # of where the pattern string i is matched with any of the [a-z]/[A-z]/[0=9]/[@#$] characters
    cnt+=bool(re.search("[0-9]",i))      # if not a single match found then returns NONE which converts to False in boolean
    cnt+=bool(re.search("[@#$]",i))      # expression otherwise True if found any.
    if cnt == 5:
        lst.append(i)

print(",".join(lst))

Question 19:

You are required to write a program to sort the (name, age, score) tuples by ascending order where name is string, age and score are numbers. The tuples are input by console. The sort criteria is:
  • 1: Sort based on name
  • 2: Then sort based on age
  • 3: Then sort by score
The priority is that name > age > score.

If the following tuples are given as input to the program:

Tom,19,80
John,20,90
Jony,17,91
Jony,17,93
JSON,21,85
Then, the output of the program should be:
[('John', '20', '90'), ('Jony', '17', '91'), ('Jony', '17', '93'), ('json', '21', '85'), ('Tom', '19', '80')]

解法一

lst = []
while True:
    s = input().split(',')
    if not s[0]:                          # breaks for blank input
        break
    lst.append(tuple(s))

lst.sort(key= lambda x:(x[0],x[1],x[2])) 
print(lst)

Question 20:

Define a class with a generator which can iterate the numbers, which are divisible by 7, between a given range 0 and n.

解法一


class Test:
    def generator(self,n):
        return [i for i in range(n) if i%7==0]   

n = int(input())
num = Test()
lst = num.generator(n)
print(lst)

这十道题的代码在我的GitHub上,如果大家想看一下每道题的输出结果,可以点击以下链接下载:

我的运行环境Python 3.6+,如果你用的是Python 2.7版本,绝大多数不同就体现在以下3点:

  • raw_input()在python3中是input()
  • print需要加括号
  • fstring可以换成.format(),或者%s,%d

谢谢大家,我们下期见!希望各位朋友不要吝啬,把每道题的更高效的解法写在评论里,我们一起进步!!!

--结束END--

本文标题: Python基础练习100题 ( 11

本文链接: https://lsjlt.com/news/192181.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python基础练习100题 ( 11
    上一期和大家分享了前10道题,今天继续来刷11~20 Question 11: Write a program which accepts a sequence of comma separated 4 digit binary nu...
    99+
    2023-01-31
    基础 Python
  • Python基础练习100题 ( 31
    昨天和大家分享了21-30题,今天继续来刷31~40题 Question 31: Define a function which can print a dictionary where the keys are number...
    99+
    2023-01-31
    基础 Python
  • Python基础练习100题 ( 41
    大家好,我又回来了,昨天和大家分享了31-40题,今天继续来看41~50题 Question 41: Write a program which can map() to make a list whose elements are s...
    99+
    2023-01-31
    基础 Python
  • Python基础练习100题 ( 61
    昨天和大家分享了51-60题,今天继续来刷61~70题 Question 61: The Fibonacci Sequence is computed based on the following formula: f(n)=0 if ...
    99+
    2023-01-31
    基础 Python
  • Python基础练习100题 ( 81
    昨天和大家分享了71-80题,今天继续来刷81~90题 Question 81: By using list comprehension, please write a program to print the list after r...
    99+
    2023-01-31
    基础 Python
  • Python基础练习100题 ( 71
    昨天和大家分享了61-70题,今天继续来刷71~80题 Question 71: Please write a program to output a random number, which is divisible by 5 and...
    99+
    2023-01-31
    基础 Python
  • Python基础练习100题 ( 51
    昨天和大家分享了41-50题,今天继续来刷51~60题 Question 51: Write a function to compute 5/0 and use try/except to catch the exceptions. ...
    99+
    2023-01-31
    基础 Python
  • Python基础练习100题 ( 21
    昨天和大家分享了前10道题,今天继续来刷21~30 Question 21: A robot moves in a plane starting from the original point (0,0). The robot can ...
    99+
    2023-01-31
    基础 Python
  • Python基础练习100题 ( 91
    昨天和大家分享了81-90题,今天继续来刷最后的91-100题 Question 91: Please write a program which accepts a string from console and print it ...
    99+
    2023-01-31
    基础 Python
  • Python基础练习100题 ( 1~
    大家好,好久不见,我最近在Github上发现了一个好东西,是关于夯实Python基础的100道题,原作者是在Python2的时候创建的,闲来无事,非常适合像我一样的小白来练习 对于每一道题,解法都不唯一,我在这里仅仅是抛砖引玉,希望可以...
    99+
    2023-01-31
    基础 Python
  • 【Python基础】练习题
    # 练习题 ''' 1、简述编译型语言和解释性语言的区别,并且列出你知道哪些语言为编译型那些为解释型 编译型语言:每次编写完成后都要将其编译成二进制(0和1)文件 优点:运行速度快 ...
    99+
    2023-01-31
    练习题 基础 Python
  • python基础1习题练习
    python基础1习题练习: #encoding:utf-8 #1.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败! name=input('name>>: ').strip...
    99+
    2023-01-31
    习题 基础 python
  • Python--基础练习
    1. 在Linux电脑上安装python,ipython,pycharm专业版本软件;   2. 在Windows电脑上安装python3版本,并配置环境变量,确保Dos环境下运行脚本;   3. Linux下有多少种运行python的不同...
    99+
    2023-01-31
    基础 Python
  • 基础Python练习题有哪些
    本篇内容主要讲解“基础Python练习题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基础Python练习题有哪些”吧!1. 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中9...
    99+
    2023-06-25
  • python基础知识练习题(二)
    1、 有两个列表   l1 = [11, 22, 33]   l2 = [22, 33, 44]    a.获取内容相同的元素列表 li = []l1 = [11, 22, 33] l2 = [22, 33, 44] for v1 i...
    99+
    2023-01-31
    练习题 基础知识 python
  • Python 基础练习 PAT水题(四)
    #学习笔记#用以练习python基础#原题链接:https://www.patest.cn/contests/pat-b-practise/1050 本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角...
    99+
    2023-01-31
    基础 Python 水题
  • 100道python经典练习题
    链接:https://pan.baidu.com/s/1K0iuZKJukLoGQ8OBy7xq1Q 提取码:2s6q 链接长期有效,如有疑问,欢迎评论区交流。 ...
    99+
    2023-01-31
    练习题 经典 python
  • python练习集100题(21-40)
    题目21:两个乒乓球队进行比赛,各出3人。甲队为a,b,c三人,乙队为x,y,z三人。以抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x、z比,请编程找出三队比赛名单。first_list=['x','y','z']...
    99+
    2023-01-31
    python
  • python基础练习_1.1
    练习_1.1练习题目:    1 打印九九乘法表     2 打印下方菱形     3 打印100以内的斐波那契数列     4 求斐波那契数列第101项     5 求10万内的所有质数        *          ***    ...
    99+
    2023-01-31
    基础 python
  • python3--基础总练习题
    1、常用字符串格式化有哪些并说明他们的区别格式化操作符(%)fotmat2、请手写一个单例模式(面试题)无论实例化多少次,他的对象始终是一个内存地址单例模式,示例:class test:    &nb...
    99+
    2023-01-30
    练习题 基础
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作