Bài tập Python 3

Bài tập python

Đăng bởi - Ngày 12-05-2018

Chào các bạn, bài hôm nay chúng ta sẽ ôn tập lại kiến thức các bài vừa qua. Các bài tập này một số mình viết dựa theo kinh nghiệm, một số mình tham khảo từ các site lớn. Nếu có gì sai sót mong các bạn góp ý.

1. Hãy viết một chương trình nhập tên và tuổi của bạn vào, sau đó hiển thị tên của bạn ra và trong bao nhiêu năm nữa bạn sẽ được 100 tuổi.

Thảo luận:

- Để hiện ra input cho phép người dùng nhập ký tự, bạn hãy sử dụng input()

name = input("Your name:")
print("Your name is:", name)

- Để chuyển đổi str sang int các bạn hãy dùng int(), hoặc đọc thêm tại đây

age = input("Your age: ")
print(int(age))

## hoặc bạn viết rút gọn như sau
age = int(input("Your age: "))

2. Viết một chương trình minigame đoán số, khi bắt đầu chương trình sẽ hỏi người dùng nhập vào một số dương từ 1-300. Minigame có yêu cầu như sau:

- Mỗi khi bắt đầu chương trình kết quả cần dự đoán số khác nhau: 1 <= (số dự đoán) >= 300

- Trả lời sai sẽ hiện ra kết quả "Bạn đã trả lời sai x lần", với x là số lần trả lời sai

- Nếu trả lời sai năm lần thì sẽ đổi số kết quả và cho người dùng đoán lại năm lần, và thông báo với người dùng: "Bạn đoán trật tất cả năm lần, kết quả đã thay đổi. Mời bạn đoán lại"

- Nếu trả lời số gần đúng trong khoảng lớn hơn hoặc nhỏ hơn 10 số sẽ thông báo người dùng là "Bạn đoán gần đúng rồi!".

- Nếu người dùng trả lời đúng kết quả, chương trình sẽ kết thúc và hiện ra thông báo "Bạn đã dự đoán chính xác số y", với y là kết quả của số dự đoán

Thảo luận:

- Để lấy số bất kỳ trong khoảng 1 tới 300 bạn cần dùng function random.randrange

- Để hiển thị input cho người dùng nhập số dự đoán, bạn dùng input()

Nâng cao:

- Khi người dùng thắng game, chương trình sẽ hiện ra thông báo "Bạn đã dự đoán chính xác số y", với y là kết quả của số dự đoán. Bạn sẽ hỏi người dùng có muốn chơi tiếp hay không, và yêu cầu nhập Yes, No:

  + Người dùng nhập Yes: Chương trình sẽ bắt đầu lại nhưng lưu trữ lại số lần chiến thắng và số lần dự đoán của nguời dùng

  + Người dùng nhập No: Chương trình kết thúc và hiện ra thông báo "Bạn đã dự đoán chính xác a lần, trong n lần", với a là số lần người dùng đã đoán chính xác, và n là tổng số lần người dùng đoán bao gồm đoán sai và đoán đúng.

  + Người dùng nhập khác Yes/No: Hiện ra thông báo "Bạn phải trả lời Yes/No để tiếp tục chương trình"

3. Viết một chương trình lựa ra những số chẵn từ 0 đến 100 và trả về kết quả là list

Thảo luận:

- Để lựa ra số chẵn bạn hãy dùng công thức sau:

a % 2 == 0

Nếu kết quả True thì đây là số chẵn, ngược lại là số lẻ

4. Hãy viết một chương trình cho phép người dùng nhập vào một câu, và kiểm tra xem trong câu này có bao nhiêu từ trùng với nhau. Kết thúc chương trình là remove tất cả những từ trùng nhau, và hiển thị ra bao nhiêu từ trùng lặp đã bị xóa

Thảo luận:

String là list vì vậy bạn có thể dùng for để chạy kiểm tra từng chữ trong câu. Để chia ra từng cụm từ trong câu bạn hãy dùng split()

>>> "Hello world".split(" ")
['Hello', 'world']

Để nối thành câu từ list hãy dùng join()

>>> " ".join(['Hello', 'world'])
'Hello world'

5. Hãy viết một chương trình nói ngược, bất kỳ câu nào người dùng nhập vào chương trình sẽ đảo ngược lại, và viết hoa chữ cái đầu.

>>> "Anh yêu em"
'Em yêu anh'

Thảo luận:

Bài này cũng tương tự như như bài 5, sau khi bạn split words ra rồi bạn sẽ đảo ngược items trong list và join lại thành 1 string mới. Bài này có nhiều hướng để giải quyết, bạn hãy làm ít nhất 2 hướng giải quyết bài này.

Các bạn có thể comment bài giải tại đây hoặc gửi cho mình tại trang liên hệ . Bài giải mình sẽ cập nhật cho các bạn sau.

Các thẻ
8 nhận xét
  1. Trả lời

    PHAN ANH

    15 Tháng 5, 2019

    BẠN ƠI CHO MÌNH HỎI, CODE DƯỚI ĐÂY BỊ LỖI GÌ VẬY Ạ?

    import random
    def testrandom ():
    flag = 0
    while flag == 0:
    numbers = int(random.random()*1000)
    if 100 < numbers and numbers < 300:
    flag = 1
    return numbers

    number = 0
    SOLANCHIENTHANG = 0
    SOLANDOANCUABAN = 0
    def gameshow ():
    number = testrandom
    print("number = ",number)

    solandoan = 0
    for i in range(1,5):
    doanso = int(input("nhap so ban doan: "))
    SOLANDOANCUABAN = SOLANDOANCUABAN + 1
    if doanso == number:
    SOLANCHIENTHANG = SOLANCHIENTHANG + 1
    print("CHUC MUNG BAN DA DOAN DUNG! SO DO LA ", number)
    print("Ban co muon choi tiep (YES/NO)")
    while input() == 'YES' or input == 'NO':
    if i == 'YES':
    gameshow
    elif input() == 'NO':
    print("Ban da doan chinh xac %s lan, trong %s lan" % (SOLANCHIENTHANG,SOLANDOANCUABAN))
    else:
    break
    break
    else:
    if abs(number - doanso) < 10:
    print("BAN DOAN GAN DUNG ROI DO")
    else:
    solandoan = solandoan + 1
    print("BAN DA DOAN SAI %s LAN" % solandoan)

    • Trả lời

      Khoa Nguyen

      21 Tháng 1, 2020

      Đây là bài của em ạ, cảm ơn mn đã đọc

      #let on game
      import random as rd

      #pick number:
      def begin():
      x=int(input("Let pick random number: "))
      if x in range(1,301):
      print(x)
      return x
      else:
      print("Select another number, the accepted number in range 1,300: ")
      return begin()
      # Play game

      def result():
      y=rd.randrange(1,301)
      return y
      def setup():
      num=result()
      print("The result is: ",num)
      i=0
      while i < 5:
      x=begin()
      if x == num:
      print("Congrats, the result is:", num, "at ", i + 1, "time(s)" )
      input1 = input("Do you want to play again? (Yes/No) ")
      if input1 == "Yes":
      return setup()
      else:
      print(" Thanks for joining our game")
      return
      else:
      print("Huh, You're wrong", i + 1 ,"time(s).", "Let pick another number")
      i +=1
      continue
      if i+1 >= 5:
      print(" You lose this game, do you wanna play one more times? Yes/No")
      input2= input()
      if input2 == "Yes":
      return setup()
      else:
      print("Thanks for joining our game")



      setup()

  2. Trả lời

    PHAN ANH

    15 Tháng 5, 2019

    Bạn có thể cho mình hỏi code sau đây có lỗi gì không ạ?
    import random
    def testrandom ():
    flag = 0
    while flag == 0:
    numbers = int(random.random()*1000)
    if 100 < numbers and numbers < 300:
    flag = 1
    return numbers

    number = 0
    SOLANCHIENTHANG = 0
    SOLANDOANCUABAN = 0
    def gameshow ():
    number = testrandom
    print("number = ",number)

    solandoan = 0
    for i in range(1,5):
    doanso = int(input("nhap so ban doan: "))
    SOLANDOANCUABAN = SOLANDOANCUABAN + 1
    if doanso == number:
    SOLANCHIENTHANG = SOLANCHIENTHANG + 1
    print("CHUC MUNG BAN DA DOAN DUNG! SO DO LA ", number)
    print("Ban co muon choi tiep (YES/NO)")
    while input() == 'YES' or input == 'NO':
    if i == 'YES':
    gameshow
    elif input() == 'NO':
    print("Ban da doan chinh xac %s lan, trong %s lan" % (SOLANCHIENTHANG,SOLANDOANCUABAN))
    else:
    break
    break
    else:
    if abs(number - doanso) < 10:
    print("BAN DOAN GAN DUNG ROI DO")
    else:
    solandoan = solandoan + 1
    print("BAN DA DOAN SAI %s LAN" % solandoan)

    • Trả lời

      Anh Vũ Từ

      18 Tháng 5, 2019

      number = 0
      SOLANCHIENTHANG = 0
      SOLANDOANCUABAN = 0

      1. 3 dòng trên phải đặt trong function gameshow() nha bạn.
      2. trong testrandom, return numbers phải đặt cùng cấp với while
      3. trong function gameshow():
      a) number = testrandom sửa lại thành number = testrandom()
      b) if i == 'YES':
      gameshow
      thành:
      if i == 'YES':
      gameshow()
      nói chung là code trên sẽ không chạy được, đây là bản mình fix cho code trên, bạn có thể tham khảo: https://pastebin.com/H6QMPPMA

  3. Trả lời

    Memz

    25 Tháng 7, 2019

    Rất hay, cảm ơn bạn đã đóng góp !

  4. Trả lời

    đạt nguyễn đat

    27 Tháng 7, 2019

    import random

    a = random.randint(1, 300)
    doan_lan_x = 0
    for i in range(1,5):
    print("enter number you guess",a)
    b = input()
    doan_lan_x = doan_lan_x +1

    if int(b)==a:
    print("you are genius\ndo you want play againt ?\n enter (y/n)")
    c=input()
    if c=='y':
    continue
    else:
    print("see you letter")
    elif int(b) >= int(a-10) and int(b)<= int(a+10):
    print ("well, you're about to be right ")
    else:
    print("you was wrong ")
    print('you was wrong ',doan_lan_x,'time')
    print ('your turn is end ')
    print("number right is:", a)

  5. Trả lời

    Huỳnh Phú Quý

    13 Tháng 9, 2019

    Bài 4 làm sao ạ ??

  6. Trả lời

    Dang Huynh

    06 Tháng 11, 2019

    Bài 2 em chạy được rồi nhưng chưa rõ lắm khái niệm "return None" trên bài bạn kia, đọc trên mạng lằng nhằng quá, a giải thích giúp e là nó có quan trọng ko và khi nào cần dùng; (e ko dùng vẫn chạy được). Thanks a !
    ----Code chạy được nhưng chắc vẫn còn lỗi, mong được góp ý ạ ----
    import random

    print("Chao mung ban den voi Minigame doan so tu 1 toi 300: ")
    #Xet so nhap vao
    def Input():
    try:
    num = input("Vui long nhap so tu 1 -> 300: ")
    value = int(num)
    return value
    except ValueError as e:
    print("ValueError message: ", str(e))
    print("type(e): ", type(e))
    print("Ban vua nhap khong hop le, vui long nhap lai.")
    value = Input()
    return value

    def Checkrandom(t = 0, w = 0,up = 1):
    # Chay ngau nhien tap ket qua tu 1 -> 300
    y = random.randrange(1,300)
    print("Ket qua random: ", y)
    roll = True
    for i in range(5):
    t = t + 1
    x = Input()
    if x == int(y):
    print("Chuc mung ban da doan dung, tai lan doan thu: ", t)
    w = w + 1
    while roll:
    choose = input("Ban co muon choi tiep? Nhap Y de tiep tuc hoac N de dung lai: ")
    if choose.upper() == "Y":
    up = up + 1
    Checkrandom(t,w,up)
    roll = False
    else:
    print("Ban da doan chinh xac %s lan, trong %s lan doan, voi %s lan choi." % (w,t, up))
    roll = False
    break
    else:
    if abs(int(x) - int(y)) < 10:
    print("Ban doan gan dung roi.")
    else:

    print("Ban da doan sai %s lan." % (t))

    Checkrandom()

Nhận xét mới

bắt buộc

yu.kusanagi
Từ Anh Vũ
Hồ Chí Minh, Việt Nam

Xin chào, tôi tên Từ Anh Vũ và là 1 free lancer developer và ngôn ngữ code yêu thích của tôi là Python và PHP. Công việc chủ yếu là viết các module cho magento, magento2, wordpress, django, flask và các framework khác
Nếu bạn muốn trao đổi với tôi hoặc muốn thuê tôi làm việc cho dự án của bạn, hãy liên hệ với tôi

ĐĂNG KÝ NHẬN BÀI MỚI

Tweets gần đây
Tác giả
Feeds
RSS / Atom
-->

Đăng ký nhận bài viết mới tại hocpython.com?

Hãy đăng ký nhận bài viết mới tại hocpython.com để:

  • Không bỏ lỡ các bài tutorials mới tại hocpython.com!
  • Cập nhật các công nghệ mới trong python!

Chỉ cần điền email và họ tên của bạn và nhấn Đăng ký nhận tin!