100 preguntas de práctica clásicas de Python que vale la pena practicar mucho (con respuestas detalladas)

Hola a todos, el documento está aquí nuevamente, aquí hay 100 preguntas de práctica clásicas de Python

Tomó una semana resolver 100 ejercicios de Python. Si es un principiante, este ejercicio le brindará una gran ayuda. Si puede completar este ejercicio de forma completamente independiente. Pregunta, ya ha comenzado con Python, y las preguntas de práctica cubren la mayor parte de los conceptos básicos de Python:

Python100 preguntas de práctica clásicas, con respuestas Muchos amigos a veces se confunden al aprender Python, no saben detectar si su nivel es muy alto, en esta oportunidad les traigo este 1 https://mp.weixin . qq.com/ s/wJKG2AsaCQxQhpK-rf2qwQPregunta 1

pregunta:

Escriba un programa que encuentre todos los números que son divisibles por 7 pero no múltiplos de 5 (entre 2000 y 3200 (ambos inclusive)). Los números obtenidos deben imprimirse en una línea en orden separado por comas.

pista:

Considere usar el método range(#begin, #end).

Mi solución: Python 3

  • uso para bucle

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

print ','.join(l)
  • Uso de generadores y listas de comprensión

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

Pregunta 2

pregunta:

Escriba un programa que pueda calcular el factorial de un número dado, el resultado debe imprimirse en una línea en orden separado por comas, suponga que se le da la siguiente entrada al programa: 8 Entonces, la salida debe ser: 40320

pista:

Si se proporcionan datos de entrada a una pregunta, se debe suponer que se trata de una entrada de la consola.

Mi solución: Python 3

  • 使用While循环
    n = int(input()) La función #input() toma la entrada como tipo de cadena
    #int() la convierte a tipo entero
    fact = 1
    i = 1
    while i <= n:
    fact = fact * i;
    i = i + 1
    imprimir (hecho)

  • 使用For循环
    n = int(input()) La función #input() toma la entrada como tipo de cadena
    #int() la convierte a tipo entero
    fact = 1
    for i in range(1,n+1):
    fact = fact * i
    imprimir (hecho)

  • 使用Lambda函数
    n = int(input())
    def shortFact(x): devuelve 1 si 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))

Pregunta 3

pregunta:

Con un número entero n dado, escriba un programa para generar un diccionario que contenga (i, ixi) como números enteros entre 1 y n (ambos inclusive). A continuación, el programa debería imprimir el diccionario. Suponiendo que se da la siguiente entrada al programa: 8 \
Entonces, la salida debería ser:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}

pista:

Si se proporcionan datos de entrada a una pregunta, se debe suponer que se trata de una entrada de la consola. Considere usar dict()

Mi solución: Python 3:

  • uso para bucle

n = int(input())
ans = {}
for i in range (1,n+1):
    ans[i] = i * i
print(ans)
  • usar el diccionario de comprensión

n = int(input())
ans={i : i*i for i in range(1,n+1)}
print(ans)
# 演进
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)))

Estos son los problemas resueltos el primer día. Los problemas anteriores son muy fáciles para los principiantes básicos. Muestro algunos métodos de codificación simples en la solución. Veamos cómo enfrentar y lidiar con nuevos problemas al día siguiente.

pregunta

Escriba un programa que tome como entrada una secuencia separada por comas de números binarios de 4 dígitos y verifique si son divisibles por 5. Los números divisibles por 5 se imprimirán en orden separado por comas.
ejemplo:
0100,0011,1010,1001
Entonces la salida debería ser:
1010
NOTA: Se supone que los datos se ingresan a través de la consola.

pista:

Si se proporcionan datos de entrada a una pregunta, se debe suponer que se trata de una entrada de la consola.
def check(x):                       #转换二进制整数&返回由5零中频整除
    total, pw = 0, 1
    reversed(x)

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

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



for i in data:
    if check(i) == 0:              #如果零发现它是指由零整除并添加到列		lst.append(i)

print(",".join(lst))

o

def  check(x):#如果被5整除,则check函数返回true 
    return  int(x,2)%5  ==  0       #int(x,b)将x作为字符串,将b作为基数,
                                #将其转换为十进制
数据 = 输入()。分割(',')

data  =  list(filter(check(data)))#在filter(func,object)函数中,如果通过'check'函数
print(“,”。join(data)找到True,则从'data'中选取元素。

o

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

Pregunta 12

pregunta:

Escriba un programa que encuentre todos los números entre 1000 y 3000 (ambos inclusive) de modo que cada dígito del número sea par. Los números obtenidos deben imprimirse en una línea en orden separado por comas.

pista:

Si se proporcionan datos de entrada a una pregunta, se debe suponer que se trata de una entrada de la consola.

Mi solución: Python 3

lst = []

for i in range(1000,3001):
    flag = 1
    for j in str(i):         #每个整数编号i被转换成字符串
    
        if ord(j)%2 != 0:     #ORD返回ASCII值并且j是i
            flag = 0          
    if flag == 1:
        lst.append(str(i))   #i作为字符串存储在列表中

print(",".join(lst))

o

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

lst = [str(i) for i in range(1000,3001)]        #创建所有给定数字的列表,其字符串数据类型为
lst = list(filter(check,lst))                   #如果检查条件失败,则过滤器从列表中删除元素
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来在过滤器功能内部定义函数
print(",".join(lst))

Pregunta 13

pregunta:

Escriba un programa que tome una oración y cuente el número de letras y números.
Supongamos que se le da la siguiente entrada al programa:
hello world! 123
Entonces, la salida debería ser:
LETTERS 10
DIGITS 3

pista:

Si se proporcionan datos de entrada a una pregunta, se debe suponer que se trata de una entrada de la consola.
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))

o

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

for i in word:
    if i.isalpha(): #返回true如果字母表
        letter += 1
    elif i.isnumeric(): #返回true如果数字
        digit += 1
print(f"LETTERS {letter}\n{digits}") #两种解决方案均显示两种不同类型的格式化方法

Todas las preguntas por encima de 10-13 están relacionadas en su mayoría con cadenas. La parte principal de la solución consiste en funciones de reemplazo de cadenas y métodos de comprensión para escribir el código en una forma más corta.

Pregunta 14

pregunta:

Escriba un programa que tome una oración y cuente el número de letras mayúsculas y minúsculas.
Supongamos que se le da la siguiente entrada al programa:
Hello world!
Entonces, la salida debería ser:
UPPER CASE 1
LOWER CASE 9

pista:

Si se proporcionan datos de entrada a una pregunta, se debe suponer que se trata de una entrada de la consola.

Mi solución: 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))

o

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

o

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)

Python100 preguntas de práctica clásicas, con respuestas Muchos amigos a veces se confunden al aprender Python, no saben detectar si su nivel es muy alto, en esta oportunidad les traigo este 1 https://mp.weixin . qq.com/ s/wJKG2AsaCQxQhpK-rf2qwQ

Supongo que te gusta

Origin blog.csdn.net/m0_68507761/article/details/125015311
Recomendado
Clasificación