鱼C论坛

 找回密码
 立即注册
查看: 2107|回复: 4

[已解决]关于字符串,循环体合并练习遇到的问题

[复制链接]
发表于 2020-11-11 22:16:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
print('欢迎来到皮皮X的世界~~~')
password = '皮皮最帅'
count = 3

while count:
    sentence = input('猜一猜我最喜欢听那句话:')
    if sentence.isdigit():
   
        if password == sentence:
            print('你真聪明')
            print('猜中了也没有奖励')
            break
        else:
            if "*" in sentence:
                print('密码中不能含有"*"号! 你还有', count,'次机会',end=' ')
                continue
            else:
                print('你在猜一猜!你还有',count-1,'次机会',end=' ')
            count -=1
    else:
         print("抱歉,您的输入有误,请输入中文:", end='')
print('游戏结束')

情况说明,我想将输入的答案若为阿拉伯数字时,将提示抱歉,您的输入有误,请输入中文:,但是我这里又有提示密码中不能含有"*"号,现在不知道这种操作可不可行,总之我就是想将除了输入中文以外,输入任何的数字、符号、英文大小写都会给与一定的提示,不知道可不可行??
最佳答案
2020-11-11 23:19:51
本帖最后由 jackz007 于 2020-11-11 23:53 编辑
print('欢迎来到皮皮X的世界~~~')
password = '皮皮最帅'
count = 3
for x in range(count , 0 , -1):       # 主循环,总共循环 count 次
    f1 , f2 = True , True
    while f1:                         # 输入循环,在字符串中包含ASCII码字符的情况下会维持 
        f1 = False                    # 不再循环,除非检查到非法字符。
        sentence = input('猜一猜我最喜欢听那句话:') . strip()
        if sentence :                 # 如果你键入了内容 
            for c in sentence:        # 字符串检查循环
                if ord(c) < 128 :     # c 是 ASCII 码字符(字母、数字、特殊符号等)
                    if c == '*':      # c 是 '*' 字符
                        print('抱歉,您的输入有误,密码中不能含有"*"号! \n')
                    else:             # c 是其它字符也不行
                        print("抱歉,您的输入有误,请输入中文\n")
                    f1 = True         # 那就让输入循环继续,重新获取输入
                    break             # 结束字符串检查循环
        else:                         # 如果没有任何输入
            f1 , f2 = False , False   # 那就设置标志
            break                     # 退出获取字符串输入的循环
    if f2:                            # 如果有键盘输入
        if password == sentence:
            print('你真聪明')
            print('猜中了也没有奖励')
            break                     # 退出主循环
        else:
            if x > 1:
                print('猜错了!你还有', x - 1 , '次机会\n')
    else:                             # 如果没有键盘输入
        break                         # 那就直接退出主循环
else:                                 # count 次循环全部用完
    print('十分遗憾。\n')
print('游戏结束')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-11 22:31:42 | 显示全部楼层
[b]

可以通过遍历你输入的字符串,通过 ord 函数判断 ASCII 码值是否在 32~126范围之中

ASCII 码的 32~126 位 都是键盘上可以打出的英文标点符号+数字+字母 的 ASCII 码的范围了

注意这里不包含中文字符,所以如果你输入的是中文符号我下面的参考代码是不会提示输入错误的哈,但是大体上能满足要求

参考代码:
print('欢迎来到皮皮X的世界~~~')
password = '皮皮最帅'
count = 3

while count:
    sentence = input('猜一猜我最喜欢听那句话:')
    if password == sentence:
        print('你真聪明')
        print('猜中了也没有奖励')
        break
    else:
        for i in sentence:
            if 32<= ord(i) <= 126:
                print('输入错误!我最喜欢听的那句话是纯中文哦~你还有',count, '次机会', end=' ')
                break
        else:
            print('你在猜一猜!你还有', count - 1, '次机会', end=' ')
            count -= 1

print('游戏结束')
[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-11 22:36:49 | 显示全部楼层
Twilight6 发表于 2020-11-11 22:31
可以通过遍历你输入的字符串,通过 ord 函数判断 ASCII 码值是否在 32~126范围之中

ASCII 码的 32~1 ...

这个ord函数是不是还没有讲到?我目前学习到了第九讲!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-11 22:38:02 | 显示全部楼层
摩擦哥 发表于 2020-11-11 22:36
这个ord函数是不是还没有讲到?我目前学习到了第九讲!



恩 是的,ord 函数 是返回字符的 ASCII 码值的

建议继续学习下去哈~这些问题在你后续学习应该会慢慢解开的~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-11 23:19:51 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-11-11 23:53 编辑
print('欢迎来到皮皮X的世界~~~')
password = '皮皮最帅'
count = 3
for x in range(count , 0 , -1):       # 主循环,总共循环 count 次
    f1 , f2 = True , True
    while f1:                         # 输入循环,在字符串中包含ASCII码字符的情况下会维持 
        f1 = False                    # 不再循环,除非检查到非法字符。
        sentence = input('猜一猜我最喜欢听那句话:') . strip()
        if sentence :                 # 如果你键入了内容 
            for c in sentence:        # 字符串检查循环
                if ord(c) < 128 :     # c 是 ASCII 码字符(字母、数字、特殊符号等)
                    if c == '*':      # c 是 '*' 字符
                        print('抱歉,您的输入有误,密码中不能含有"*"号! \n')
                    else:             # c 是其它字符也不行
                        print("抱歉,您的输入有误,请输入中文\n")
                    f1 = True         # 那就让输入循环继续,重新获取输入
                    break             # 结束字符串检查循环
        else:                         # 如果没有任何输入
            f1 , f2 = False , False   # 那就设置标志
            break                     # 退出获取字符串输入的循环
    if f2:                            # 如果有键盘输入
        if password == sentence:
            print('你真聪明')
            print('猜中了也没有奖励')
            break                     # 退出主循环
        else:
            if x > 1:
                print('猜错了!你还有', x - 1 , '次机会\n')
    else:                             # 如果没有键盘输入
        break                         # 那就直接退出主循环
else:                                 # count 次循环全部用完
    print('十分遗憾。\n')
print('游戏结束')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 21:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表