100+Python挑战性编程练习系列 -- day 3

news/2024/11/17 9:54:08/

Question 10

编写一个程序,接受一系列空格分隔的单词作为输入,并在删除所有重复的单词并按字母数字排序后打印这些单词。
假设向程序提供以下输入:
hello world and practice makes perfect and hello world again
然后,输出应为:
again and hello makes perfect practice world

方法1:

word = input().split()for i in word:if word.count(i) > 1:    #count function returns total repeatation of an element that is send as argumentword.remove(i)     # removes exactly one element per callword.sort()
print(" ".join(word))

方法2:

word = sorted(list(set(input().split())))              #  input string splits -> converting into set() to store unique#  element -> converting into list to be able to apply sort
print(" ".join(word))

Question 11

写一个程序,它接受一个由逗号分隔的4位二进制数序列作为输入,然后检查它们是否能被5整除。可被5整除的数字将以逗号分隔的顺序打印。
示例:
0100,0011,1010,1001
那么输出应该是:
1010

方法1:

def check(x):                       # converts binary to integer & returns zero if divisible by 5total,pw = 0,1reversed(x)for i in x:total+=pw * (ord(i) - 48)   # ord() function returns ASCII valuepw*=2return total % 5data = input().split(",")           # inputs taken here and splited in ',' position
lst = []for i in data:if check(i) == 0:               # if zero found it means divisible by zero and added to the listlst.append(i)print(",".join(lst))

方法2:

def check(x):                   # check function returns true if divisible by 5return 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))

方法3:

data = input().split(',')
data = [num for num in data if int(num, 2) % 5 == 0]
print(','.join(data))

Question 12

写一个程序,它将找到所有这样的数字之间的1000和3000(包括),使每个数字的数字是一个偶数。所获得的数字应以逗号分隔的顺序打印在一行上。

方法1:

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

方法2:

def check(element):return all(ord(i)%2 == 0 for i in element)  # all returns True if all digits i is even in elementlst = [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))

方法3:(一行)

print(','.join([str(num) for num in range(1000, 3001) if all(map(lambda num: int(num) % 2 == 0, str(num)))]))

Question 13

写一个程序,接受一个句子并计算字母和数字的数量。
假设向程序提供以下输入:
hello world! 123
然后,输出应为:
LETTERS 10
DIGITS 3

方法1:

word = input()
letter,digit = 0,0for i in word:if ('a'<=i and i<='z') or ('A'<=i and i<='Z'):letter+=1if '0'<=i and i<='9':digit+=1print("LETTERS {0}\nDIGITS {1}".format(letter,digit))

方法2:

word = input()
letter, digit = 0,0for i in word:if i.isalpha(): # returns True if alphabetletter += 1elif i.isnumeric(): # returns True if numericdigit += 1
print(f"LETTERS {letter}\n{digits}") # two different types of formating method is shown in both solution

方法3:

#using reduce for to count
from functools import reducedef count_letters_digits(counters,char_to_check):counters[0] += char_to_check.isalpha()counters[1] += char_to_check.isnumeric()return countersprint('LETTERS {0}\nDIGITS {1}'.format(*reduce(count_letters_digits,input(),[0,0])))

所有上述问题大多是字符串相关的问题。解决方案的主要部分包括字符串相关函数和理解方法,以更短的形式写下代码。


http://www.ppmy.cn/news/60029.html

相关文章

C语言入门教程||C语言 错误处理||C语言 递归

C语言 错误处理 C 语言不提供对错误处理的直接支持&#xff0c;但是作为一种系统编程语言&#xff0c;它以返回值的形式允许您访问底层数据。在发生错误时&#xff0c;大多数的 C 或 UNIX 函数调用返回 1 或 NULL&#xff0c;同时会设置一个错误代码 errno&#xff0c;该错误代…

Android - 约束布局 ConstraintLayout

一、概念 解决布局嵌套过多的问题&#xff0c;采用方向约束的方式对控件进行定位。 二、位置约束 2.1 位置 至少要保证水平和垂直方向都至少有一个约束才能确定控件的位置。 layout_constraintLeft_toLeftOf我的左边&#xff0c;与XXX左边对齐。layout_constraintLeft_toRight…

java错题总结(19-21页)

链接&#xff1a;关于Java中的ClassLoader下面的哪些描述是错误的_用友笔试题_牛客网 来源&#xff1a;牛客网 B&#xff1a;先讲一下双亲委派机制&#xff0c;简单来说&#xff0c;就是加载一个类的时候&#xff0c;会往上找他的父类加载器&#xff0c;父类加载器找它的父类加…

一个go http和grpc客户端库

大家好&#xff0c;我是peachesTao&#xff0c;今天是五一假期的第4天&#xff0c;首先祝大家劳动节快乐。今天给大家推荐一个统一http和grpc客户端调用的库&#xff0c;名为prpc&#xff0c;github地址&#xff1a;prpc&#xff0c;该库是我公司根据最佳实践总结开发出来的&am…

Java 多线程知识

参考链接&#xff1a;https://www.cnblogs.com/kingsleylam/p/6014441.html https://blog.csdn.net/ly0724ok/article/details/117030234/ https://blog.csdn.net/jiayibingdong/article/details/124674922 导致Java线程安全问题最主要的原因&#xff1a; &#xff08;1&#…

Java基础(十七)File类与IO流

1. java.io.File类的使用 1.1 概述 File类及本章下的各种流&#xff0c;都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录&#xff08;俗称文件夹&#xff09;&#xff0c;与平台无关。&#xff08;体会万事万物皆对象&#xff09;File 能新…

WordPress网站如何开启Gzip压缩快速传输

最近无聊都没有使用Gzip压缩,是因为发现开启这个压缩也是有学问的。服务器上设置、WordPress站点上设置还是插件上设置让我有所疑惑。通过几天的研究学习,总结并分享下如何将 WordPress 站点开启 Gzip 压缩以达到加快传输的目的。 gzip on; gzip_min_length 1k; gzip_buffe…

linux_线程基础函数-pthread_self函数-pthread_create函数-pthread_exit函数-pthread_join函数

接上一篇&#xff1a;linux_线程概念-内核线程实现原理-线程共享资源-线程优缺点 今天来分享线程的代码函数了&#xff0c;主要是获得线程ID、创建线程函数、线程退出函数、等待线程结束函数&#xff0c;以及分享这些函数的例子&#xff0c;话不多说&#xff0c;开始上菜&#…