Crossin的编程教室

标题: 【Python 第10课】 变量2 [打印本页]

作者: iamocean    时间: 2013-7-30 21:52
标题: 【Python 第10课】 变量2
变量这东西,我们已经用过。有了变量,就可以存储和计算数据。今天来讲点变量的细节。


#==== 变量命名规则 ====#
变量名不是你想起就能起的:


第一个字符必须是字母或者下划线“_”

剩下的部分可以是字母、下划线“_”或数字(0-9)

变量名称是对大小写敏感的,myname和myName不是同一个变量。
几个有效的栗子:
i
__my_name
name_23
a1b2_c3


几个坏掉的栗子(想一下为什么不对):
2things
this is spaced out
my-name



#==== 变量的运算 ====#


我们前面有用到变量来存储数据: num = 10
answer = input()


也有用到变量来比较大小: answer < num


除此之外,变量还可以进行数学运算: a = 5 b = a + 3 c = a + b


python中运算的顺序是,先把“=”右边的结果算出了,再赋值给左边的变量。下面这个例子: a = 5 a = a + 3 print a
你会看到,输出了8,因为先计算出了右边的值为8,再把8赋给左边的a。
通过这种方法,可以实现累加求和的效果。它还有个简化的写法:
a += 3这个和a = a + 3是一样的。


于是,利用变量、循环、累加,可以写一个程序,来完成传说中高斯大牛在小时候做过的题:1+2+3+...+100=?从1加到100等于多少?


提示:你可以用一个变量记录现在加到几了,再用一个变量记录加出来的结果,通过while来判断是不是加到100了。


#==== Crossin的编程教室 ====#
微信ID:crossincode
QQ群:312723402

面向零基础初学者的编程课
每天5分钟,轻松学编程

f68e6e3d269759eee7be4973b3fb43166c22df15.jpg

作者: gagamomo    时间: 2013-8-15 14:22
让我来:

sum = 0
i = 0
while i <= 100:
    sum = sum + i
    i = i + 1
print '计算结果为:' ,sum
作者: 508490571    时间: 2014-3-12 14:46
gagamomo 发表于 2013-8-15 14:22
让我来:

sum = 0

威……
作者: mouse0809    时间: 2014-4-27 14:50
a = 1
b = 1

while a < 100:
    a+=1
    b+=a

print "1+2+3+...+100="
print b
作者: 迷途小書僮    时间: 2014-4-28 16:16
a = 0
sum = 0
while a < 100 :
    a += 1
    sum = sum + a
    if a == 100 :
        print 'total=' , sum
作者: mihchaelli    时间: 2014-5-31 06:59
print "let's gaosi"
a = 1
b = a
answer = b
while a <= 100:
    a = a + 1
    b = b + a
    print answer

哪位大神帮我看一下我这个哪里错了。。。
谢谢

作者: crossin先生    时间: 2014-5-31 16:02
mihchaelli 发表于 2014-5-31 06:59
print "let's gaosi"
a = 1
b = a

已在微信回答,这里再贴一下:

程序是从上到下按顺序执行的。answer=b这句,只是把当时b的值赋给answer,不代表answer就是b了。后面b进行累加计算而改变,但answer的值并没有变换。
作者: mihchaelli    时间: 2014-5-31 21:46
谢谢了
作者: fuyuanjun12    时间: 2014-6-11 16:35
print 'do you know 1+2+3+...+100=?'
input()

a=1
b=0
while a<=100:
    b+=a
    a+=1

print 'The answer is:',b
raw_input()
作者: QQ_4C2DAC    时间: 2014-6-11 22:09
一般代码:
  1. smail=input("smail:")
  2. big=input("big:")
  3. a=smail
  4. sum=0
  5. while a<=big:
  6.     sum+=a
  7.     a+=1
  8. print(sum)
复制代码
优化代码:
  1. smail=input("smail:")
  2. big=input("big:")
  3. sum=0
  4. print (smail+big)*(big-smail+1)/2
复制代码

作者: 化成    时间: 2014-6-19 20:43
QQ_4C2DAC 发表于 2014-6-11 22:09
一般代码:优化代码:

请教您一个问题:点击一下“复制代码”就可以将代码复制,这是怎么实现的啊?
作者: crossin先生    时间: 2014-6-20 10:35
化成 发表于 2014-6-19 20:43
请教您一个问题:点击一下“复制代码”就可以将代码复制,这是怎么实现的啊? ...

论坛自带的功能,发帖时选择用代码格式就可以。
应该是通过页面上的javascript实现的
作者: 萧风    时间: 2014-6-29 23:29
  1. sum=0
  2. totle=0
  3. i=0
  4. while i<=100:
  5.     sum+=i
  6.     i+=1
  7.     totle+=1
  8. print sum,totle-1
复制代码

作者: xiaohuzai    时间: 2015-2-8 14:39
sum = 0
times = 0
while times < 100:
    times+=1
    sum=sum+times
print sum
作者: xiaohuzai    时间: 2015-2-8 14:40
mihchaelli 发表于 2014-5-31 06:59
print "let's gaosi"
a = 1
b = a

这个的answer永远是1
作者: cross    时间: 2015-4-20 22:22
n = 1
sum = 0
while n <= 100:
    sum = sum + n
    n = n + 1
print sum

作者: fix    时间: 2015-5-12 08:59
a = 0
b =0

while a <99:
    b = b+a
    a = a+1
   
while a<100:
    b = b+a
    a = a+1

    print a
    print b
输出最终结果

作者: fix    时间: 2015-5-12 10:09
#learning in crossin
#while To circulate everything,under while  
a = 0
b =0  #the prerequisite to determine the sentence below

while a <99:
    a = a+1
    b = b+a
while a<100:
    a = a+1
    b = b+a
    print a
    print b
12课发现上面做错 while 下b结果放到a结果后面才能用a新赋值
作者: lovia    时间: 2015-5-27 18:21
数字开头
不能有空格
不能有-
作者: lanyun    时间: 2015-6-14 18:16
a=input()
b=0
t=0
print'please input a number'
while t<a:
    t=t+1
    b=b+t
    print '计算结果为:' ,b
作者: xueshan123    时间: 2015-10-13 21:03
a=1
b=0
while a<=100:
    b=b+a
    print a
    a=a+1   
    print b

作者: 我是一个小菜鸟    时间: 2015-12-10 17:52
n=0
num=0
while n<100:
    n=n+1
    num=n+num
    print("次序:累和=%d:%d" % (n,num))
作者: dulcinea    时间: 2016-1-1 23:22
fuyuanjun12 发表于 2014-6-11 16:35
print 'do you know 1+2+3+...+100=?'
input()

没有
input()
raw_input()
也可以的,是吧?
作者: 程序猿和攻城狮    时间: 2016-3-10 16:14
cross 发表于 2015-4-20 22:22
n = 1
sum = 0
while n

不对啊
作者: 程序猿和攻城狮    时间: 2016-3-10 16:18
a = 0
b = 0
while b < 100:
    b = b+1
    a = a+b
print a

作者: exchen    时间: 2016-4-18 11:03
  1. s=0
  2. i=0
  3. while i<100:
  4.     i+=1
  5.     s+=i
  6. print s
复制代码

作者: Killuia    时间: 2016-4-21 15:27
为什么我自己在代码后面用  #注释  会运行不了代码?我试过加英文的“”符号,一样都是不能运行。
作者: crossin先生    时间: 2016-4-22 11:09
Killuia 发表于 2016-4-21 15:27
为什么我自己在代码后面用  #注释  会运行不了代码?我试过加英文的“”符号,一样都是不能运行。  ...

加中文注释的话,需要在文件开头一行加上编码设置
另外确保符号是用的英文标点
作者: 追风    时间: 2016-4-29 15:54
迷途小書僮 发表于 2014-4-28 16:16
a = 0
sum = 0
while a < 100 :

  if a == 100 :是多余的,当a==100会自动跳出循环
作者: 追风    时间: 2016-4-29 15:57
mihchaelli 发表于 2014-5-31 06:59
print "let's gaosi"
a = 1
b = a

而且,这个会加到101,而不是100.把下面前后顺序换一下就好了。
a = a + 1
b = b + a
作者: 追风    时间: 2016-4-29 16:13
lanyun 发表于 2015-6-14 18:16
a=input()
b=0
t=0

print '计算结果为:' ,b
应该顶格写,不然,会执行a次
作者: 追风    时间: 2016-4-29 16:15
dulcinea 发表于 2016-1-1 23:22
没有
input()
raw_input()

是的,他这里只是设置了一个情景。
作者: 追风    时间: 2016-4-29 16:19
程序猿和攻城狮 发表于 2016-3-10 16:18
a = 0
b = 0
while b < 100:

你这个和他那个都是可以的,
b = b+1
a = a+b
两条语句顺序不同,while的判断条件也会不同
作者: mxclover    时间: 2016-5-29 17:09
a = 0
sum = 0

while a < 100:
      a = a + 1
      sum = sum + a
print sum
作者: mxclover    时间: 2016-5-29 17:22
gagamomo 发表于 2013-8-15 14:22
让我来:

sum = 0

你好!"while i <= 100"应改为"while i < 100",不然最后运行的结果为5151。
作者: pino    时间: 2016-8-17 13:09
mihchaelli 发表于 2014-5-31 06:59
print "let's gaosi"
a = 1
b = a

answer=b在while前面 没有进行后面的运算
作者: 十三才    时间: 2016-8-28 10:52
a=0
sum=0
while a<=99:
    a=a+1
    sum=sum+a
print sum



作者: python-learner    时间: 2017-4-20 06:34
虽然知道while是循环语句,但对它发生作用的逻辑过程一直理解的不分明。今天起的早,按照自己的理解对这一课的代码内容和输出结果做了解析,记录一下~~

1.jpg (14 KB, 下载次数: 297)

1.jpg

2.jpg (30.18 KB, 下载次数: 301)

2.jpg


作者: crossin先生    时间: 2017-4-20 18:08
python-learner 发表于 2017-4-20 06:34
虽然知道while是循环语句,但对它发生作用的逻辑过程一直理解的不分明。今天起的早,按照自己的理解对这一 ...

你这个excel分析法倒是挺有意思
也可以看看这个工具:https://zhuanlan.zhihu.com/p/20721034
作者: python-learner    时间: 2017-4-21 18:50
哈哈哈,老师看到我~~~
谢谢老师,我用它去看下12课的for循环~~
作者: hs0207    时间: 2017-5-11 23:54
b=1
a=0
while b!=100:
    a=a+b
    b=b+1
    print a

作者: qdqqqiang    时间: 2017-5-13 19:01
# coding UTF-8
sum = 0
i = 0
count = 0
while i <= 100:
    sum += i
    i += 1
print (sum)
作者: Seerz    时间: 2017-7-1 11:26
我稍微小改动了一下,可以变成一个累加计算器

print('请输入一个值n,计算1+2+3+……+n的值')
a = 0
b = 0
n = eval(input())
while a < n:
    a = a + 1
    b = b + a
print(b)

作者: Seerz    时间: 2017-7-1 14:55
一开始一直琢磨,怎么把变量一直更新,最后看了答案才明白可以通过再赋值就行了,还是惯性思维了。
然后按思路添加了判断大于3的条件。

print('输入一个大于3的数字n,列出前n项菲波那切数列。')
a1 = 1
a2 = 1
n = eval(input())
x = 1
if n <= 3:
    print('错误,n必须大于3')
if n > 3:
    print(a1)
    print(a2)
    while x <= n:
        a3 = a1 + a2
        a1 = a2
        a2 = a3
        x += 1
        print(a3)

作者: hzk010    时间: 2017-11-16 17:08
时代已经进入到了Python3.5
_=__=0
while __ <= 100:
        _+=__
        __+=1
print(_)
作者: mickcc    时间: 2017-12-23 23:37
收获蛮多的,看着简单,我想了很久也没有成功
但是也收获了一点,就是while里的变量不能直接加变量,会提示变量为定义
比如我写的是
a=1
b=2
while a!=101:
    c=a+b+c
    a=a+2
    b=b+2
print c

这里的c就不能把值传到下次循环去,或者在前面再加个c=0就可以了

   
作者: dxw551354    时间: 2018-3-1 10:46
for循环:
#904 计算1到100的值
print('计算1到100的值')
sum = 0
for a in range(1,101):
    sum = sum+a
    print(a)
print(sum)
作者: wwf7361    时间: 2018-3-3 11:56
sum=0
a=1
while a<101:
    sum+=a
    a+=1
    print sum

作者: 哦哦UP    时间: 2020-3-13 22:33
我不明白为什么从1加到100是这么个求和,能不能给拆解一下运算步骤。
作者: crossin先生    时间: 2020-3-14 17:16
哦哦UP 发表于 2020-3-13 22:33
我不明白为什么从1加到100是这么个求和,能不能给拆解一下运算步骤。

关于你的问题
a、b初始均为0
每次循环,
a = a + 1, 即依次为 1,2,3,4……直到100
b = b + a,即依次把a的值(也就是1~100)加起来,最后的结果即为 1加到100的和
参考解答
https://mp.weixin.qq.com/s?__biz ... =19#wechat_redirect

先去理解while,然后理解从1输出到100的代码,再理解求和的代码



作者: 哦哦UP    时间: 2020-3-14 19:52
crossin先生 发表于 2020-3-14 17:16
关于你的问题
a、b初始均为0
每次循环,

我明白了,a=0 b=o 然后 a=0+1 b=0+1 然后 a=1+1 b=1+2 然后 a=2+1 b=1+2+3 然后 a=3+1 b=1+2+3+4  这样依次类推下去。
作者: 哦哦UP    时间: 2020-3-14 19:54
crossin先生 发表于 2020-3-14 17:16
关于你的问题
a、b初始均为0
每次循环,

我的数学高考59分 理解起来有点困难
作者: crossin先生    时间: 2020-3-15 11:57
哦哦UP 发表于 2020-3-14 19:52
我明白了,a=0 b=o 然后 a=0+1 b=0+1 然后 a=1+1 b=1+2 然后 a=2+1 b=1+2+3 然后 a=3+1 b=1+2+3+4  这样 ...

理解正确!




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5