Computer >> Máy Tính >  >> Lập trình >> Python

Những thách thức về lập trình Python cơ bản

Trong hướng dẫn này, chúng tôi sẽ viết một giải pháp cho một thách thức.

Thử thách

Chúng ta phải tạo một tập hợp ngẫu nhiên các phép toán số học cơ bản. Người dùng sẽ đưa ra số lượng câu hỏi và chúng tôi phải tạo câu hỏi. Sau mỗi câu hỏi, người dùng sẽ trả lời nó. Cuối chương trình phải cho điểm. Hãy thử nó.

Ví dụ

# importing random and operator modules
import random
import operator
# main function
# taking number of questions that we have to generate
def main(n):
   print("Welcome to the quiz\nYou should answer floats upto 2 decimals")
   # initialising score to 0
   score = 0
   # loop to generate n questions
   for i in range(n):
      # getting answer and correctness of a question
      is_correct, answer = question(i)
      # checking whether is_correct is True or not
      if is_correct:
         # increment score by 1 if correct
         score += 1
         print('Correct Congrats!')
      else:
         # printing the correct answer
         print(f'Incorrect! Answer: {answer}')
   # displaying the total score
   print(f'Total score: {score}')
# function for the question
def question(n):
   # getting answer from the generate_function
   answer = generate_question()
   # taking answer from the user
   user_answer = float(input("Answer: "))
   # returning answer to the main function
   return user_answer == answer, answer
# function to generate a random question
def generate_question():
   # initialising operators for random generation
   operators = {
      '+' : operator.add,
      '-' : operator.sub,
      '*' : operator.mul,
      '/' : operator.truediv,
      '//' : operator.floordiv,
      '%' : operator.mod
   }
   # initialising numbers for expressions
   nums = [i for i in range(10)]
   # getting two random numbers from nums for calculation
   _1, _2 = nums[random.randint(0, 9)], nums[random.randint(0, 9)]
   # generating random operator from the list of operators
   symbol = list(operators.keys())[random.randint(0, 5)]
   # calculating the answer
   answer = round(operators.get(symbol)(_1, _2), 2)
   print(f'{_1} {symbol} {_2}?')
   return answer
if __name__ == '__main__':
   main(5)

Đầu ra

Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.

Welcome to the quiz
You should answer floats upto 2 decimals
5 + 7?
Answer: 12
Correct Congrats!
9 / 9?
Answer: 1
Correct Congrats!
4 + 7?
Answer: 11
Correct Congrats!
6 // 6?
Answer: 1.0
Correct Congrats!
9 % 3?
Answer: 0
Correct Congrats!
Total score: 5

Kết luận

Bạn cũng có thể cải thiện câu hỏi bằng cách thêm một số tính năng khác như tăng độ khó, tạo câu hỏi từ dễ đến khó, v.v., Hãy tự mình thử. Tôi hy vọng bạn thích hướng dẫn. Nếu bạn có bất kỳ nghi ngờ nào, hãy đề cập đến chúng trong phần bình luận.