在用户登录账号时,我需要在字典中查找是否存在其账号名称以及密码是否正确。

所以,我想将用户输入的账号赋值给变量,在字典中查找是否有此指值。

代码如下:

 1 Ya = {'姓名': 'Ya', 'password': '123', '性别': '男', '职业': '学生'}
2 user_message = {'Ya': Ya}
3
4 in_name = input("输入:")
5 in_password = input("输入:")
6
7 if in_name in user_message:
8 print("存在")
9 # 重点在这下面这句!
10 if in_password == in_name['password']:
11 print("正确")
12 else:
13 print("滚犊子")

按照我的预想,用户输入Ya,赋值给了in_name   ,相当于

 9     # 重点在这下面这句!
10 if in_password == Ya['password']:

我想这样能行,提出字典Ya中的password与用户输入的password进行匹配。

但结果确实意料之外的,报错如下

输入:Ya
输入:123
存在
Traceback (most recent call last):
  File "D:\AAAAA\20211007try\user_message.py", line 16, in <module>
    if in_password == in_name['password']:
TypeError: string indices must be integers

#TypeError:字符串索引必须是整数

用户输入的字符串“Ya”虽然和变量Ya看起来相同,但其起到的作用在程序中是完全不同的

变量名是变量名,字符串是字符串,格式很重要

这种傻的离谱的想法最好还是不要有,亦或者是因为我还不太懂

原理我还是没特别清楚,希望大神可以留言解释。


然后,事情总要解决的,我随意的换了一种方式,代码如下:

 1 Ya = {'姓名': 'Ya', 'password': '123', '性别': '男', '职业': '学生'}
2 user_message = {'Ya': Ya}
3
4 in_name = input("输入:")
5 in_password = input("输入:")
6
7 if in_name in user_message:
8 print("存在")
9 if in_password == user_message[in_name]['password']:
10 # if in_password == in_name['password']:
11 print("Y")
12 else:
13 print("滚犊子")

字符串有字符串的去处,这次我将in_name作为查找字典的键,而非变量。

于是,user_message[in_name] == 变量Ya

再从Ya中查找出password与输入的进行对比匹配

这次成功了


认真的思考这两次的对比,

我妄图将字符串用成变量名,这是出现这次事故的原因

print(type(Ya),type(in_name))

<class 'dict'> <class 'str'>

也许有其他办法能解决

关于Python中用户输入字符串(与变量名相同)无法作为变量名引用的理解以及解决方案的更多相关文章

  1. Python中判断输入字符串是否为数字的方法

    在写物理实验图像处理的脚本时,遇到了一个判断输入的字符串是否为数字的方法 最开始我的思路是这个 test = input() while test.isdigit(): # do something ...

  2. python中的输入和输出

    输入和输出   输出: 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print('hello, ...

  3. python学习第九讲,python中的数据类型,字符串的使用与介绍

    目录 python学习第九讲,python中的数据类型,字符串的使用与介绍 一丶字符串 1.字符串的定义 2.字符串的常见操作 3.字符串操作 len count index操作 4.判断空白字符,判 ...

  4. shell编程中用户输入处理(shell 04)

    shell编程中用户输入处理1.命令行参数2.脚本运行时获取输入 命令行参数 通过空格来进行分割的位置参数 :$+position $0,$1,$2 ....$0 :程序名$1,$2,$3 ... $ ...

  5. Python 中的反转字符串:reversed()、切片等

    摘要:以相反的顺序反转和处理字符串可能是编程中的一项常见任务.Python 提供了一组工具和技术,可以帮助您快速有效地执行字符串反转. 本文分享自华为云社区<Python 中的反转字符串:rev ...

  6. C#根据用户输入字符串,输出大写字母有几个,小写字母有几个

    static void Main(string[] args) { // 根据用户输入字符串,输出大写字母有几个,小写字母有几个. Console.WriteLine("请输入一行英文代码& ...

  7. 简介Python中用于处理字符串的center()方法

    简介Python中用于处理字符串的center()方法 这篇文章主要介绍了简介Python中用于处理字符串的center()方法,是Python入门中的基础知识,需要的朋友可以参考下 center() ...

  8. Python中如何将字符串作为变量名

    应用场景描述: 通过配置文件获取服务器上配置的服务名及运行端口号,编写python脚本检测服务上服务是否在运行? #!/usr/bin/env python # -*- coding:utf-8 -* ...

  9. Python学习-用户输入和字符串拼接

      用户输入和字符串拼接 #用户输入和字符串拼接username=input("username:")age=int(input("Age:")) #转换整数型 ...

随机推荐

  1. P7443-加边【博弈论】

    正题 题目链接:https://www.luogu.com.cn/problem/P7443?contestId=41429 题目大意 \(n\)个点的一棵有根树,两个人从一号点开始进行有向图博弈. ...

  2. disruptor笔记之七:等待策略

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. WebMagic 爬虫技术

    WebMagic WebMagic 介绍 WebMagic基础架构 Webmagic 的结构分为 Downloader.PageProcessor.Scheduler.Pipeline四大组件,并由 ...

  4. Vue插槽slot理解与初体验 ~

    一.插槽的理解 1.官网介绍 Vue 实现了一套内容分发的 API,将 <slot> 元素作为承载分发内容的出口. 2.为什么使用插槽 Vue 中有一个重要的概念-组件,可以在开发中将子组 ...

  5. Codeforces Round #747 (Div. 2)

    比赛地址 A(水题) 题目链接 题目: 给出指定\(n\),求解出一段区间\([l,r]\)使得\(\sum\limits_{i=l}^ri=n\) 解析: 从点0,1两点作为起点分别向左右延伸长度, ...

  6. Java-多态(上)

    什么是多态 同一方法可以根据发送对象的不同而采取多种不同的行为方式 一个对象实际类型是确定的 但指向其引用类型却有很多 注意事项 多态是方法的多态 属性没有多态 父类和子类 有联系 类型转换异常 Cl ...

  7. 微信小程序_快速入门02

    01我们学习了环境的准备和简单的demo,现在是时候来学习简单的页面编写了,首先我们来学习一些常用的基础标签: 一.view盒子,就是类似于div的盒子,可以用来存其他元素的容器. 二.text 文本 ...

  8. 2021.9.9考试总结[NOIP模拟50]

    T1 第零题 神秘结论:从一个点满体力到另一个点的复活次数与倒过来相同. 于是预处理出每个点向上走第$2^i$个死亡点的位置,具体实现可以倍增或二分. 每次询问先从两个点同时向上倍增,都转到离$LCA ...

  9. 预备知识-python核心用法常用数据分析库(上)

    1.预备知识-python核心用法常用数据分析库(上) 目录 1.预备知识-python核心用法常用数据分析库(上) 概述 实验环境 任务一:环境安装与配置 [实验目标] [实验步骤] 任务二:Pan ...

  10. 云效Flow如何实现阿里云ECS多环境发布

    一.背景 云效Flow基于标签功能实现阿里云ECS多环境发布,在软件开发和部署过程中,我们的软件往往需要在不同的运行环境中运行,例如:开发人员本地开发环境.测试团队的测试环境.还有类生产环境和生产环境 ...