【2021-12-30】我爱林俊杰之猜歌游戏

本文介绍了三个不同级别的林俊杰猜歌游戏。初级版限制玩家只有三次猜测机会,中级版则为无限循环直到猜对为止,高级版引入了random模块,随机选择曲目增加挑战性。玩家需根据提示输入歌曲名称,游戏过程中会检查歌曲长度是否正确,提供错误提示并引导玩家继续尝试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 只能猜三次

print('-----我爱林俊杰之猜歌游戏----')
count = 0
while(1):
    temp = input("不妨猜一下,现在JJLin心里想的是哪首歌:")
    guess = str(temp)
    #如果是修炼爱情
    if guess == "修炼爱情":
        print("猜对啦!You're my soulmate,Lynne")
    #如果不是修炼爱情
    else:
        count += 1
        if(3 == count):
            print('略略略,三次错误,游戏结束,(*^_^*)')
            break;
        if (4 != len(guess)):
            print('猜错了,是四个字的歌才对,小笨蛋!~')
        else:
            print('猜错了,是四个字的歌,但不是这首喔!~')
            

2.无限循环猜,直至猜对结束

print('-----我爱林俊杰之猜歌游戏----')
temp = input("不妨猜一下,现在JJLin心里想的是哪首歌:")
guess = str(temp)
while guess != "修炼爱情":
    temp = input("哎呀,猜错咯,请继续猜鸭:")
    guess = str(temp)
    #如果是修炼爱情
    if guess == "修炼爱情":
        print("猜对啦!You're my soulmate,Lynne")
    #如果不是修炼爱情
    else:
        if (4 != len(guess)):
            print('猜错了,是四个字的歌才对,小笨蛋!~')
        else:
            print('猜错了,是四个字的歌,但不是这首喔!~')
print('游戏结束,(*^_^*)')

3.random模块引用

import random
Songs = ['穿越', '四点四十四', '我继续']
num = random.randint(0, 2)
print('哥哥心里的歌是曲库里的第%d首的%s' %(num,Songs[num]))
print('-----我爱林俊杰之猜歌游戏----')
temp = input("不妨猜一下,现在JJLin心里想的是哪首歌:")
guess = str(temp)

while(1):
    # 如果猜对了
    if guess == Songs[num]:
        print("\n猜对啦!You're my soulmate,Lynne")
        break;
    else:
        print("\n-------------------------------")
        temp = input("哎呀,真可惜,猜错了,请继续猜鸭:")
        guess = str(temp)
        if (len(guess) != len(Songs[num])):
            print('\n猜错了,|歌名·字数| 不对,小笨蛋!~')
        else:
            if(guess != Songs[num]):
                print('\n猜错了,|歌名·字数| 对了,但不是这首喔!~')
print('游戏结束,(*^_^*)')

### Java中Key-Value结构的概念和用法 #### Key-Value结构的概念 在Java编程语言中,`Key-Value` 是一种常见的数据存储模式,其中 `Key` 表示唯一的标识符,而 `Value` 则表示与该标识符关联的数据。这种结构类似于现实生活中的字典或电话簿,通过一个关键字可以快速找到对应的值。在Java中,最常用的实现方式是使用 `Map` 接口及其具体实现类(如 `HashMap`, `LinkedHashMap`, 和 `TreeMap`)。这些集合允许开发者以高效的方式管理键值对。 #### 基本特性 1. **唯一性**: 每个 `Key` 在同一个 `Map` 中必须是唯一的。如果尝试插入具有相同 `Key` 的新条目,则会覆盖旧的 `Value`。 2. **灵活性**: `Key` 和 `Value` 可以为任何对象类型,只要它们实现了必要的方法(例如 `hashCode()` 和 `equals()` 方法对于某些类型的 `Map` 很重要)。 3. **性能优化**: 不同的 `Map` 实现提供了不同的时间复杂度用于查找、插入和删除操作。例如,`HashMap` 提供了平均常数级的时间复杂度 O(1),但在最坏情况下可能退化到线性级别 O(n)[^1]。 #### 使用场景举例 下面是一些实际应用的例子: ##### 手分类案例 ```java public static void main(String[] args) { // 创建一个 HashMap 来保存不同地区的手列表 HashMap<String, String[]> map = new HashMap<>(); // 添加多个区域以及相应的手数组作为 Value map.put("华语", new String[]{"林俊杰", "陈奕迅"}); map.put("欧美", new String[]{"贾斯汀·比伯", "艾德·希兰"}); } ``` 此代码片段展示了如何利用 `HashMap` 将地区名称设为 `Key` 并将其对应的一组手名字设定成 `Value`[^1]。 ##### 字符频率统计案例 另一个例子涉及计算字符串里各个字母出现频次的任务: ```java import java.util.*; public class CharacterFrequencyCounter { public static void main(String[] args) { String inputStr = "hello world"; // 初始化 LinkedHashMap 保持输入顺序 Map<Character, Integer> freqMap = new LinkedHashMap<>(); for (char c : inputStr.toCharArray()) { char lowerCasedChar = Character.toLowerCase(c); if (!freqMap.containsKey(lowerCasedChar)) freqMap.put(lowerCasedChar, 0); freqMap.put(lowerCasedChar, freqMap.get(lowerCasedChar) + 1); } System.out.println(freqMap); } } ``` 这里采用了 `LinkedHashMap` 类型以便维持原始字符序列的同时记录每种字符重复计数值[^2]。 #### Redis中的Key-Value模型对比 尽管Redis也采用类似的 `Key-Value` 存储机制,但它内部处理的是更复杂的二进制安全字符串而非简单的Java对象实例。而且Redis支持多种数据类型作为Values,比如Strings, Lists, Sets等,这使得它非常适合构建高性能缓存解决方案或其他分布式应用场景[^4]。 #### 复杂嵌套结构的支持 当面对更加复杂的业务需求时,还可以创建包含其他容器类型作为 Values 的 Maps 。如下所示即是一个简单示范,展示了一个 Map 如何容纳 List<Integer> 类型的内容[^5]: ```java Map<String, List<Integer>> complexMapExample = new HashMap<>(); List<Integer> numbers = Arrays.asList(1, 2, 3); complexMapExample.put("exampleKey", numbers); System.out.println(complexMapExample.get("exampleKey")); //[1, 2, 3] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值