摩擦哥 发表于 2020-11-11 22:16:31

关于字符串,循环体合并练习遇到的问题

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('游戏结束')

情况说明,我想将输入的答案若为阿拉伯数字时,将提示抱歉,您的输入有误,请输入中文:,但是我这里又有提示密码中不能含有"*"号,现在不知道这种操作可不可行,总之我就是想将除了输入中文以外,输入任何的数字、符号、英文大小写都会给与一定的提示,不知道可不可行??

Twilight6 发表于 2020-11-11 22:31:42



可以通过遍历你输入的字符串,通过 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('游戏结束')

摩擦哥 发表于 2020-11-11 22:36:49

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

ASCII 码的 32~1 ...

这个ord函数是不是还没有讲到?我目前学习到了第九讲!

Twilight6 发表于 2020-11-11 22:38:02

摩擦哥 发表于 2020-11-11 22:36
这个ord函数是不是还没有讲到?我目前学习到了第九讲!



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

建议继续学习下去哈~这些问题在你后续学习应该会慢慢解开的~

jackz007 发表于 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('游戏结束')
页: [1]
查看完整版本: 关于字符串,循环体合并练习遇到的问题