10个有趣的Python编程挑战题目
下面是十个有趣的Python编程挑战题目,并带有使用例子:
1. 反转字符串
编写一个函数,接受一个字符串作为参数,并返回该字符串的反转版本。例如,如果输入字符串为 "hello",则返回 "olleh"。
def reverse_string(string):
return string[::-1]
print(reverse_string("hello")) # 输出 "olleh"
2. 判断质数
编写一个函数,接受一个整数作为参数,并判断该整数是否为质数。质数是指只能被1和自身整除的正整数。
def is_prime(number):
if number < 2:
return False
for i in range(2, int(number**0.5) + 1):
if number % i == 0:
return False
return True
print(is_prime(17)) # 输出 True
print(is_prime(20)) # 输出 False
3. 计算斐波那契数列
编写一个函数,接受一个整数 n 作为参数,并返回斐波那契数列的前 n 个数字。斐波那契数列是指前两个数字为 0 和 1,后续每个数字都是前两个数字之和。
def fibonacci(n):
fibonacci_sequence = [0, 1]
for i in range(2, n):
fibonacci_sequence.append(fibonacci_sequence[i-1] + fibonacci_sequence[i-2])
return fibonacci_sequence
print(fibonacci(10)) # 输出 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
4. 查找最长单词
编写一个函数,接受一个句子作为参数,并返回该句子中最长的单词。如果有多个最长单词,只返回 个最长单词。
def longest_word(sentence):
words = sentence.split()
longest_word = ""
for word in words:
if len(word) > len(longest_word):
longest_word = word
return longest_word
print(longest_word("Hello world, I love Python")) # 输出 "Python"
5. 判断回文字符串
编写一个函数,接受一个字符串作为参数,并判断该字符串是否是一个回文字符串。回文字符串是指正着读和反着读都一样的字符串。
def is_palindrome(string):
reversed_string = string[::-1]
return string == reversed_string
print(is_palindrome("level")) # 输出 True
print(is_palindrome("hello")) # 输出 False
6. 数字猜谜游戏
编写一个程序,让用户猜一个随机生成的数字。如果用户猜测的数字小于生成的数字,则输出"太小了";如果用户猜测的数字大于生成的数字,则输出"太大了";如果用户猜测正确,则输出"恭喜,猜对了!"。
import random
def guess_number():
number = random.randint(1, 100)
while True:
guess = int(input("请猜一个数字:"))
if guess < number:
print("太小了")
elif guess > number:
print("太大了")
else:
print("恭喜,猜对了!")
break
guess_number()
7. 统计字符出现次数
编写一个函数,接受一个字符串和一个字符作为参数,并返回该字符在字符串中出现的次数。
def count_occurrences(string, character):
count = 0
for char in string:
if char == character:
count += 1
return count
print(count_occurrences("hello", "l")) # 输出 2
8. 生成随机密码
编写一个函数,接受一个整数 n 作为参数,并生成一个由 n 个随机字符组成的密码。
import random
import string
def generate_password(n):
password = ''
for _ in range(n):
password += random.choice(string.ascii_letters + string.digits + string.punctuation)
return password
print(generate_password(8)) # 输出类似 "aB2@7$zC"
9. 石头剪刀布游戏
编写一个程序,实现石头剪刀布游戏。程序首先询问玩家要出什么手势("石头"、"剪刀"或"布"),然后随机生成对手的手势,并根据规则判断谁赢了。
import random
def rock_paper_scissors():
player_gesture = input("请选择你要出什么手势(石头/剪刀/布):")
cpu_gesture = random.choice(["石头", "剪刀", "布"])
if player_gesture == cpu_gesture:
print("平局")
elif (player_gesture == "石头" and cpu_gesture == "剪刀") or \
(player_gesture == "剪刀" and cpu_gesture == "布") or \
(player_gesture == "布" and cpu_gesture == "石头"):
print("你赢了!")
else:
print("你输了!")
rock_paper_scissors()
10. 找素数对
编写一个函数,接受一个整数 n 作为参数,并返回所有小于 n 的素数对。素数对是指差为2的两个素数,例如(3, 5)和(11, 13)。
def find_prime_pairs(n):
prime_pairs = []
for i in range(2, n-2):
if is_prime(i) and is_prime(i+2):
prime_pairs.append((i, i+2))
return prime_pairs
print(find_prime_pairs(20)) # 输出 [(3, 5), (5, 7), (11, 13), (17, 19)]
以上是十个有趣的Python编程挑战题目,它们涵盖了字符串操作、数学运算、条件语句和循环、随机数生成等多个方面,可以帮助你提高Python编程能力并享受编程的乐趣。
