国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python基礎練習100題 ( 11~ 20)

luckyw / 2386人閱讀

摘要:刷題繼續上一期和大家分享了前道題,今天繼續來刷解法一解法二解法三解法一解法二解法三解法四解法一解法二解法三解法一解法二解法三解法一解法二解法一解法一解法二解法一解法二解法三解法四解法一解法一源代碼下載這十道題的

刷題繼續

上一期和大家分享了前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}
DIGITS {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
DIGITS %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}
LOWER 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}
LOWER 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 11-20題

我的運行環境Python 3.6+,如果你用的是Python 2.7版本,絕大多數不同就體現在以下3點:

raw_input()在Python3中是input()

print需要加括號

fstring可以換成.format(),或者%s,%d

謝謝大家,我們下期見!希望各位朋友不要吝嗇,把每道題的更高效的解法寫在評論里,我們一起進步!!!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43935.html

相關文章

  • Python基礎練習100 ( 31~ 40)

    摘要:刷題繼續昨天和大家分享了題,今天繼續來刷題解法一解法二解法一解法二解法一解法一解法一解法一解法一解法一解法二解法一解法二解法一源代碼下載這十道題的代碼在我的上,如果大家想看一下每道題的輸出結果,可以點擊以下鏈接下載題我的運行環境如果你 刷題繼續 昨天和大家分享了21-30題,今天繼續來刷31~40題 Question 31: Define a function which can pr...

    miracledan 評論0 收藏0
  • Python基礎練習100 ( 41~ 50)

    摘要:刷題繼續大家好,我又回來了,昨天和大家分享了題,今天繼續來看題解法一解法二解法一解法二解法一解法二解法一解法二解法一解法一解法一解法一解法一解法一源代碼下載這十道題的代碼在我的上,如果大家想看一下每道題的輸出結果,可以點擊以下鏈接下載題 刷題繼續 大家好,我又回來了,昨天和大家分享了31-40題,今天繼續來看41~50題 Question 41: Write a program whi...

    mochixuan 評論0 收藏0
  • Python基礎練習100 ( 61~ 70)

    摘要:刷題繼續昨天和大家分享了題,今天繼續來刷題解法一解法一解法一解法一解法一解法一解法一解法一解法二解法一解法二解法一解法二源代碼下載這十道題的代碼在我的上,如果大家想看一下每道題的輸出結果,可以點擊以下鏈接下載題 刷題繼續 昨天和大家分享了51-60題,今天繼續來刷61~70題 Question 61: The Fibonacci Sequence is computed based o...

    jeyhan 評論0 收藏0
  • Python基礎練習100 ( 91~ 100

    摘要:刷題繼續昨天和大家分享了題,今天繼續來刷最后的題解法一解法二解法一解法二解法一雞兔同籠解法一解法一解法二解法一解法二默認就是 刷題繼續 昨天和大家分享了81-90題,今天繼續來刷最后的91-100題 Question 91: Please write a program which accepts a string from console and print it in rever...

    Jrain 評論0 收藏0

發表評論

0條評論

luckyw

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<