You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:实现无重复随机输出5条中式签文的程序

问题描述

我是一名Python初学者(仅学习了教材60页内容),想要编写一个程序:从签文列表中随机输出5条不重复的中式签文,每次输出一条后询问“是否想要下一条签文?”,用户回复“yes”则继续输出,直到5条全部输出完毕。目前的问题是不知道如何实现签文无重复输出,以下是我尝试编写的两段代码:

第一段尝试代码

import random 

fortunes_list = ['愿你吉星高照', '财源广进', '万事顺遂', '平安喜乐', '步步高升']

sampled_fortunes = random.sample(fortunes_list, 1)

print(sampled_fortunes) 

input("是否想要下一条签文?")

answer = ""

while answer != "no":
    print(sampled_fortunes)
    input("是否想要下一条签文?")

第二段尝试代码

import random 

fortunes_list = ['愿你吉星高照', '财源广进', '万事顺遂', '平安喜乐', '步步高升']

print(random.choice(fortunes_list)) 

input("是否想要下一条签文?")

answer = ""

while answer != "no":
    print(random.choice(fortunes_list))
    input("是否想要下一条签文?")
问题分析
  • 第一段代码问题:仅用random.sample获取1条签文后,循环里始终输出这条重复内容,没有获取新的签文。
  • 第二段代码问题:每次调用random.choice会从原列表随机选取,无法避免重复,不能保证输出的5条签文无重复。
解决方案

核心思路:先一次性从列表中选出5条不重复的签文,再逐个输出,每次询问用户是否继续,直到全部输出完成。

import random

# 中式签文列表
fortunes_list = ['愿你吉星高照', '财源广进', '万事顺遂', '平安喜乐', '步步高升', '学业有成', '阖家幸福', '健康长寿']

# 随机抽取5条不重复的签文
selected_fortunes = random.sample(fortunes_list, 5)

# 遍历输出选中的签文
for index, fortune in enumerate(selected_fortunes):
    print(fortune)
    # 不是最后一条签文时,才询问用户
    if index != len(selected_fortunes) - 1:
        while True:
            answer = input("是否想要下一条签文?(yes/no) ")
            if answer.lower() == "yes":
                break
            elif answer.lower() == "no":
                print("本次求签结束。")
                exit()
            else:
                print("请输入有效的指令:yes或no!")

print("5条签文已全部输出完毕,本次求签结束。")

代码说明

  1. 用random.sample(fortunes_list, 5)直接从原列表抽取5条不重复的签文,一步解决无重复问题。
  2. 通过for循环遍历选中的签文,逐个输出。
  3. 每次输出后(除最后一条),循环等待用户输入:输入yes则继续下一条,输入no直接结束程序,输入其他内容提示重新输入,避免无效操作。
  4. 全部输出完成后给出明确的结束提示。

内容的提问来源于stack exchange,提问作者CRZY Moto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:35:49