最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

值得苦練的100道Python經(jīng)典練手題,(附詳細(xì)答案)建議收藏!

2023-08-07 16:28 作者:過(guò)期的秋刀_魚  | 我要投稿

嗨嘍大家好卷子又來(lái)了,100道Python經(jīng)典練手題奉上

花了一周的時(shí)間,整理了100道Python的練習(xí)題,如果你是一位初學(xué)者,那么這一份練習(xí)題將會(huì)給你帶來(lái)極大的幫助,如果你能夠完全獨(dú)立的完成這份練習(xí)題,你已經(jīng)入門的Python了,練習(xí)題涵蓋Python基礎(chǔ)的大部分內(nèi)容:【PDF文末拿!】

問(wèn)題1

問(wèn)題:

編寫一個(gè)程序,查找所有此類數(shù)字,它們可以被7整除,但不能是5的倍數(shù)(在2000和3200之間(均包括在內(nèi)))。獲得的數(shù)字應(yīng)以逗號(hào)分隔的順序打印在一行上。

提示:

考慮使用范圍(#begin,#end)方法。

我的解決方案:Python 3

  • 使用for循環(huán)

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

print ','.join(l)

  • 使用生成器和列表理解

print(*(i for i in range(2000, 3201) if i%7 == 0 and i%5 != 0), sep=",")

問(wèn)題2

問(wèn)題:

編寫一個(gè)程序,可以計(jì)算給定數(shù)字的階乘,結(jié)果應(yīng)以逗號(hào)分隔的順序打印在一行上,假設(shè)向程序提供了以下輸入:8然后,輸出應(yīng)為:40320

提示:

如果將輸入數(shù)據(jù)提供給問(wèn)題,則應(yīng)假定它是控制臺(tái)輸入。

我的解決方案:Python 3

  • 使用While循環(huán)
    n = int(input()) #input() function takes input as string type
    #int() converts it to integer type
    fact = 1
    i = 1
    while i <= n:
    fact = fact * i;
    i = i + 1
    print(fact)

  • 使用For循環(huán)
    n = int(input()) #input() function takes input as string type
    #int() converts it to integer type
    fact = 1
    for i in range(1,n+1):
    fact = fact * i
    print(fact)

  • 使用Lambda函數(shù)
    n = int(input())
    def shortFact(x): return 1 if x <= 1 else x*shortFact(x-1)
    print(shortFact(n))

while True:
try:
? ?num = int(input("Enter a number: "))
? ?break
except ValueError as err:
? ?print(err)

org = num
fact = 1
while num:
? ?fact = num * fact
? ?num = num - 1
print(f'the factorial of {org} is {fact}')



from functools import reduce

def fun(acc, item):
? ?return acc*item

num = int(input())
print(reduce(fun,range(1, num+1), 1))

問(wèn)題3

問(wèn)題:

使用給定的整數(shù)n,編寫程序以生成包含(i,ixi)的字典,該字典為1到n之間的整數(shù)(都包括在內(nèi))。然后程序應(yīng)打印字典。假設(shè)向程序提供了以下輸入:8\
然后,輸出應(yīng)為:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}

提示:

如果將輸入數(shù)據(jù)提供給問(wèn)題,則應(yīng)假定它是控制臺(tái)輸入。考慮使用dict()

我的解決方案:Python 3:

  • 使用for循環(huán)

n = int(input())
ans = {}
for i in range (1,n+1):
? ?ans[i] = i * i
print(ans)

  • 使用字典理解

n = int(input())
ans={i : i*i for i in range(1,n+1)}
print(ans)
# 演進(jìn)
try:
? ?num = int(input("Enter a number: "))
except ValueError as err:
? ?print(err)

dictio = dict()
for item in range(num+1):
? ?if item == 0:
? ? ? ?continue
? ?else:
dictio[item] = item * item
print(dictio)



num = int(input("Number: "))
print(dict(enumerate([i*i for i in range(1, num+1)], 1)))

這些是第一天解決的問(wèn)題。對(duì)于基本的初學(xué)者學(xué)習(xí)者來(lái)說(shuō),上述問(wèn)題非常容易。我在解決方案中展示了一些簡(jiǎn)單的編碼方法。讓我們看看第二天如何面對(duì)和應(yīng)對(duì)新問(wèn)題。








問(wèn)題

編寫一個(gè)程序,該程序接受以逗號(hào)分隔的4位二進(jìn)制數(shù)字序列作為輸入,然后檢查它們是否可被5整除。被5整除的數(shù)字將以逗號(hào)分隔的順序打印。
例子:

0100,0011,1010,1001

然后輸出應(yīng)為:

1010

注意:假設(shè)數(shù)據(jù)是通過(guò)控制臺(tái)輸入的。

提示:

如果將輸入數(shù)據(jù)提供給問(wèn)題,則應(yīng)假定它是控制臺(tái)輸入。


def check(x): ? ? ? ? ? ? ? ? ? ? ? #轉(zhuǎn)換二進(jìn)制整數(shù)&返回由5零中頻整除
? ?total, pw = 0, 1
? ?reversed(x)

? ?for i in x:
? ? ? ?total+=pw * (ord(i) - 48) ? ?#ORD()函數(shù)返回ASCII值
? ? ? ?pw*=2
? ?return total % 5

data = input().split(",") ? ? ? ? ? #輸入此處,并在','位置分割
lst = []



for i in data:
? ?if check(i) == 0: ? ? ? ? ? ? ?#如果零發(fā)現(xiàn)它是指由零整除并添加到列 lst.append(i)

print(",".join(lst))

或者

def ?check(x):#如果被5整除,則check函數(shù)返回true
? ?return ?int(x,2)%5 ?== ?0 ? ? ? #int(x,b)將x作為字符串,將b作為基數(shù),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#將其轉(zhuǎn)換為十進(jìn)制
數(shù)據(jù) = 輸入()。分割(',')

data ?= ?list(filter(check(data)))#在filter(func,object)函數(shù)中,如果通過(guò)'check'函數(shù)
print(“,”。join(data)找到True,則從'data'中選取元素。

或者

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

問(wèn)題12

問(wèn)題:

編寫一個(gè)程序,查找所有介于1000和3000之間的數(shù)字(都包括在內(nèi)),以使數(shù)字的每個(gè)數(shù)字均為偶數(shù)。獲得的數(shù)字應(yīng)以逗號(hào)分隔的順序打印在一行上。


提示:

如果將輸入數(shù)據(jù)提供給問(wèn)題,則應(yīng)假定它是控制臺(tái)輸入。

我的解決方案:Python 3

lst = []

for i in range(1000,3001):
? ?flag = 1
? ?for j in str(i): ? ? ? ? #每個(gè)整數(shù)編號(hào)i被轉(zhuǎn)換成字符串
? ?
? ? ? ?if ord(j)%2 != 0: ? ? #ORD返回ASCII值并且j是i
? ? ? ? ? ?flag = 0 ? ? ? ? ?
? ?if flag == 1:
? ? ? ?lst.append(str(i)) ? #i作為字符串存儲(chǔ)在列表中

print(",".join(lst))

或者

def check(element):
? ?return all(ord(i)%2 == 0 for i in element) ?#所有返回true如果所有的數(shù)字,i是即使在元件

lst = [str(i) for i in range(1000,3001)] ? ? ? ?#創(chuàng)建所有給定數(shù)字的列表,其字符串?dāng)?shù)據(jù)類型為
lst = list(filter(check,lst)) ? ? ? ? ? ? ? ? ? #如果檢查條件失敗,則過(guò)濾器從列表中刪除元素
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)) ? #使用lambda來(lái)在過(guò)濾器功能內(nèi)部定義函數(shù)
print(",".join(lst))


問(wèn)題13

問(wèn)題:

編寫一個(gè)接受句子并計(jì)算字母和數(shù)字?jǐn)?shù)量的程序。
假設(shè)將以下輸入提供給程序:

hello world! 123

然后,輸出應(yīng)為:

LETTERS 10
DIGITS 3

提示:

如果將輸入數(shù)據(jù)提供給問(wèn)題,則應(yīng)假定它是控制臺(tái)輸入。


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:
? ?if i.isalpha(): #返回true如果字母表
? ? ? ?letter += 1
? ?elif i.isnumeric(): #返回true如果數(shù)字
? ? ? ?digit += 1
print(f"LETTERS {letter}\n{digits}") #兩種解決方案均顯示兩種不同類型的格式化方法


10-13以上所有問(wèn)題大多是與字符串有關(guān)的問(wèn)題。解決方案的主要部分包括字符串替換函數(shù)和理解方法,以更短的形式寫下代碼。

問(wèn)題14

問(wèn)題:

編寫一個(gè)接受句子的程序,并計(jì)算大寫字母和小寫字母的數(shù)量。
假設(shè)將以下輸入提供給程序:

Hello world!

然后,輸出應(yīng)為:

UPPER CASE 1
LOWER CASE 9

提示:

如果將輸入數(shù)據(jù)提供給問(wèn)題,則應(yīng)假定它是控制臺(tái)輸入。

我的解決方案:Python 3

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

或者

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

for i in word:
? ? ? ?lower+=i.islower()
? ? ? ?upper+=i.isupper()

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

或者

string = input("Enter the sentense")
upper = 0
lower = 0
for x in string:
? ?if x.isupper() == True:
? ? ? ?upper += 1
? ?if x.islower() == True:
? ? ? ?lower += 1

print("UPPER CASE: ", upper)
print("LOWER CASE: ", lower)






完整版值得苦練的100道Python經(jīng)典練手題PDF已經(jīng)打包完畢,需要的伙伴可以多多點(diǎn)贊 轉(zhuǎn)發(fā) 讓更多的人看到? 后臺(tái)內(nèi)扣 "學(xué)習(xí)"即可帶走




值得苦練的100道Python經(jīng)典練手題,(附詳細(xì)答案)建議收藏!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
沐川县| 桃江县| 五河县| 开平市| 城口县| 南宁市| 饶阳县| 余江县| 大连市| 汉沽区| 海兴县| 山阳县| 犍为县| 博爱县| 大悟县| 呼和浩特市| 探索| 宜宾县| 祁东县| 大安市| 昌吉市| 平塘县| 当涂县| 佛坪县| 远安县| 车险| 沂源县| 西和县| 定南县| 横山县| 常州市| 合作市| 苏州市| 木兰县| 万州区| 河北区| 库尔勒市| 江阴市| 卫辉市| 年辖:市辖区| 齐齐哈尔市|